Open AKAPUCH opened 1 year ago
main()/global()
.sync/async
{작업1()} 코드 작성 : 대기열의 종류, 작업의 우선순위, 이후 동작 등을 지정할 수 있습니다.thread pool
에서 사용가능한 쓰레드 탐색 : main 대기열은 main thread만 존재하지만, global 대기열은 여러 작업의 병렬 수행이 가능하기 때문에 가용 쓰레드 수에 따라 작업을 나눠서 할당할 수도 있습니다.sync{}
는 사용할 수 없습니다.DispatchQueue.global().sync{
print("Ice Age") // 실행되지 않고 앱이 종료됩니다.
}
print("Ice Age")
작업을 메인이 아닌 쓰레드에서 실행시키고 그 작업이 끝날 떄까지 기다릴게.sync{}
로 작업을 디스패치하면 안됩니다.DispatchQueue.global().async{
task1() // global 대기열 내부에서 작업 실행
DisPatchQueue.global().sync{ // 코드블록 내부의 작업(task2)이 끝날때까지는 현재 쓰레드 대기
task2() // 현재 쓰레드는 대기중이기 때문에 task2()는 절대 실행되지 않는다. `데드락 상태`
}
}
self
가 자주 바뀌게된다.
설명
관련 링크