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 Queue가
SerialQueue
에 해당함
- ❗️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)