
동기와 비동기 둘 다 다른 쓰레드로 작업을 보내는 것은 동일하다.
동기(Sync)
동기는 말 그대로 동시에 일어난다는 뜻이다.
여기서 동시에 일어나는 대상은 작업들이 아닌 요청과 응답을 말한다.
이는 요청에 대한 응답이 동시에 발생해야 한다는 의미이다.
즉, 다른 쓰레드로 작업을 보내고, 그 작업이 끝날 때까지 기다린다. 작업이 끝나야 다른 작업을 시작할 수 있다.
그로 인해 이전의 작업이 아무리 오래걸려도 끝날때까지 다음 작업이 진행되지 못한다.
비동기(Async)
비동기는 동시에 일어나지 않는다는 뜻이다.
여기서 동시에 일어나지 않는 대상은 작업들이 아닌 요청과 응답을 말한다.
즉, 다른 쓰레드로 작업을 보내고, 그 작업이 끝나는 것을 기다리지 않고 다른 작업을 시작한다.
그로인해 시간이 얼마나 걸리든 동시에 시작을 하고 작업이 빠른 순으로 끝나게 된다.
attributes 에 .concurrent라고 설정하면 된다.동기와 비동기는 각 쓰레드의 작업에 대한 요청을 동시에 응답할 것이냐 아니냐를 의미한다.
직렬과 동시는 큐 안에 있는 작업들을 순차적으로 진행할 것이냐 동시에 진행할 것이냐를 의미한다.
작업의 '순서'가 중요할 때 직렬이 사용된다,
동시는 여러개의 쓰레드에서 분산 작업하기 때문에 순서를 상관하지 않고 쓰레드에 할당된 작업은 각 쓰레드가 모조리 처리한다. 따라서, 만약 어떤 작업이 꼭 먼저 이뤄져야 한다면, 그럴때는 직렬을 사용하는게 좋다.
[Swift] 동기/비동기, 직렬/동시의 차이
[OS] 동기와 비동기 그리고 직렬과 동시는 무엇일까?(Sync vs Async & Serial vs Concurrent)
iOS) Sync vs Async / Serial vs Concurrent