Sync, Async(동기 비동기) / Serial, Concurrent

Bibi·2022년 1월 26일
0

Sync, Async / Serial, Concurrent

https://babbab2.tistory.com/64?category=831129

https://cskime.tistory.com/18

Sync : synchronous (동기)

: 동시 발생하는.

  • 의미 : "요청에 대한 응답"이 동시에 발생하는.
  • 즉 내 작업이 끝나기 전까지 다른 작업을 수행하지 않는다는 의미 = "순차적"
  • 평소에 비동기 작업 없이 하는 코딩이 동기 방식으로 이루어짐.
  • 대규모의 작업을 동기로 처리하면 작업속도 저하 - 비동기로 처리해야 함

Async : asynchronous (비동기)

: 동시에 발생하지 않는.

  • 의미 : "요청에 대한 응답"이 동시에 발생하지 않는다.
  • 즉 내 작업이 끝나기 전에 다른 작업을 수행할 수 있다는 의미 = "동시적"
  • 비동기로 처리한 작업은 다음 작업과 동시에 실행된다
    • 여러 작업을 동시에 처리 가능 - 작업속도 상승
  • 콜백 함수 : 비동기 작업은 요청에 대한 응답이 나중에 오기 때문에, 나중에 해야 할 작업들을 콜백함수로 처리함

Serial

: 순차적인.

  • 의미 : 순차적인. 연속적인.
  • iOS) GCD에서 serial queue 는 Main queue 등으로 사용함.
    • Queue 에 들어온 작업들을 순차적으로(Serial) 실행시키겠다.
    • Main QueueSerialQueue에 해당함
  • ❗️serial queue는 한 번에 하나의 작업만 실행시킬 수 있음
  • serial queue 는 주로 작업을 동기화할 때 사용함

Concurrent

: 동시에 발생하는.

  • 의미 : 동시적인. 동시에 발생시키는.

  • iOS) GCD에서 concurrent queue는 DispatchQueue 등으로 사용함

    • Queue에 들어온 작업들을 동시적으로(concurrent) 실행시키겠다.
  • ❗️concurrent queue 는 한 번에 여러 작업을 동시에 실행시킬 수 있음

  • concurrent queue 는 주로 작업을 수행할 때 사용함


Sync != Serial, Async != Concurrent 이다!

둘은 엄연히 다른 개념!

  • Sync, Async 는 "단일 작업"에 대해 요청 후 결과를 기다릴지 말지에 대한 관점이고,
    • 단일 작업의 요청에 대한 응답을 기다릴지(sync) 말지(async)
  • Serial, Concurrent 는 "여러 작업"에 대해 앞 작업과 뒷 작업을 어떻게 실행할지에 대한 관점이다.
    • 앞 작업과 뒷 작업을 순차적으로 실행할지(serial) 동시 실행할지(concurrent)

0개의 댓글