동기와 비동기는 하나의 쓰레드 내에서 작업을 수행하는 방식의 차이를 의미한다.
동기 Sync
동기적으로 작업을 수행한다는 것은 작업이 끝날 때까지 기다렸다가 다음 작업을 수행하는 방식이다.

시작한 작업이 끝날때까지 쓰레드 자원을 Block 상태로 막아놓고 사용하지 못하기 때문에 시간상 비효율적이지만, 일관된 결과를 보장하기 때문에 일의 순서가 중요한 작업의 경우 동기적으로 수행해야한다.
동기적으로 수행하는 경우 같은 일을 다음 쓰레드로 보내는 것이 의미가 없기 때문에 실제로는 내부적으로 메인 쓰레드에서 동작한다고 한다.
비동기 Async
비동기적으로 작업을 수행하는 경우 작업이 끝날 때까지 기다리지 않고 즉시 리턴되어 다음 작업을 바로 수행할 수 있는 방식이다.

2개 이상의 쓰레드에서 사용하는 방식이며 작업이 끝날 때까지 기다리지 않기 때문에 그 동안 다음 작업을 진행할 수 있다는 장점이 있다.
비동기가 필요한 가장 큰 이유는 대부분 서버와의 통신작업에서 지연되지 않는 UI를 제공하기 위해서이다.
직렬과 동시는 일을 처리하는 쓰레드 사용 방식을 이야기하는 표현이다.
직렬 Serial
하나의 쓰레드로만 작업을 할당하는 방식이다.
일반적으로 단일의 main 쓰레드만을 사용하는 대기열을 직렬큐라고 한다.
동시 Concurrent
여러개의 쓰레드로 작업을 할당해 분산처리를 하는 방식이다.
일반적으로 독립적이지만 유사한 여러개의 작업을 main 쓰레드에서 여러 쓰레드로 할당해 처리할 때 동시큐를 사용한다.
동시와 비동기는 가리키는 동작이 다른 말이다!!
origin: https://www.inflearn.com/course/iOS-Concurrency-GCD-Operation