Dog foot print

[IOS] Async & Sync 본문

IOS/Swift

[IOS] Async & Sync

개 발자국 2021. 9. 23. 11:04

Async 비동기

Async는 어떤 작업이 끝나기를 기다리지 않고, 다음 작업이 실행되는 것을 의미한다. 아래의 코드를 보도록 하자 .

import Foundation

print("1")
DispatchQueue.global().async(){
    print("2")
}
print("3")

위의 코드는 순차적으로 실행되지 않는다. 이것을 그림으로 보면 다음과 같다.

DispatchQueue.global().async 의 코드 역할은 블락에 있는 코드를 전달하는 것으로 이 코드의 역할은 마무리 된다. 그러므로 2번째 프린트 문을 기다리지 않고 print(3)이 출력된다.

Sync 동기

Sync는 작업을 다른쓰레드에 시키고 그 일이 종료될 때 까지 기다린다는 의미이다.
아래의 코드를 보자

print("1")

DispatchQueue.global().sync(){
    print("2")
}
print("3")

이전 과는 다르게 1 , 2 , 3 이 차례로 출력된다. 아래의 그림을 보며 이해를 돕자.

프린트 (1)이 실행되고 작업을 다른 쓰레드에게 sync 메서드를 사용하여 전달한다. 이후 메인쓰레드에서는 해당 작업이 끝날 때 까지 기다리다 다음 작업을 실행한다.

반응형

'IOS > Swift' 카테고리의 다른 글

[SWIFT] Dispatch Queue의 종류  (0) 2021.09.26
[IOS] Serial & Concurrent Queue  (0) 2021.09.23
[IOS] 쓰레드와 동시작업  (0) 2021.09.22
[Swift] 동기적 작업과 비동기적 작업  (0) 2021.09.20
[SWIFT] protocol  (0) 2021.07.21
Comments