1. async

DispatchQueue.global().async{
	tast1()
}

스크린샷 2022-02-04 오후 3.31.20.png

원래의 작업이 진행되고 있던 곳(메인스레드)에서 디스패치 글로벌 큐로 보낸 작업이 끝나는 것을 기다리지 않고 다음 작업이 시작됨

2. sync

DispatchQueue.global().sync{
	task1()
}

스크린샷 2022-02-04 오후 3.32.49.png

원래의 작업이 진행되고 있던 곳(메인스레드)에서 디스패치 글로벌 큐로 보낸 작업이끝나는 것을 기다린후 다음 작업을 시작한다.

동기와 비동기의 차이는 다른 쓰레드로 보낸 작업이 끝나는 것을 기다리냐/안기다리냐의 차이이다.

비동기가 필요한 이유가 무엇인가?

서버와 통신하는 부분의 경우 많은 시간이 소모된다. 화면 그리는 작업을 먼저 진행하면서 서버와 통신한 결과로 남은 화면을 그려주게 되면 화면이 버벅거리는 현상이 줄어든다.