iOS/Swift

DispatchQueue의 의존성

kihun5393 2021. 9. 5. 17:17

참고 사이트 링크

참고 사이트 링크

 

Global의 concurrent 특성

global은 concurrent 특성으로 여러 스레드에서 병행 처리 하기때문에 의존성 있게 데이터 관리를 할 수 없다.

var money = 10000

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

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

func buy() {
    money = money - 1000
    print(money)
}

9000

9000

 

 

main의 serial 특성

main은 serial 특성으로 다른 하나의 스레드에 작업을 넘겨주기 때문에 의존성 있게 데이터를 처리하게 된다.

var money = 10000

DispatchQueue.main.async {
    buy()
}

DispatchQueue.main.async {
    buy()
}

func buy() {
    money = money - 1000
    print(money)
}

9000

8000