<aside> 📌 목차
target 이라는 매개변수가 있는데, 이것이 무엇인가?GCD Queue 는 FIFO Queue 이다.
큐에 제출한 task 는 시스템이 관리하는 thread pool 에서 task 를 실행한다.
main dispatch queue 를 제외하고 task 를 실행할 쓰레드를 지정할 수 없다.
Except for the dispatch queue representing your app's main thread, the system makes no guarantees about which thread it uses to execute a task.
main thread 를 나타내는 dispatch queue 를 제외하고는, 시스템은 어떤 쓰레드에서 task 를 실행할 지 보장하지 않는다.
<aside> 💡 Important
Attempting to synchronously execute a work item on the main queue results in deadlock.
(단, 이 실행 맥락이 main thread 에서 실행되고 있어야함)
...
DispatchQueue.main.sync {
}
...
thread explosion 관련
concurrent queue 에 전달한 task 가 concurrent queue 를 실행하는 스레드를 블락한다면, 시스템은 추가적으로 쓰레드를 생성하여 concurrent queue 에 남아있는 task 를 실행한다.
DispatchQueue.global().async {
// async 로 전달한 블록을 실행하는 쓰레드를 block 한다.
DispatchQueue.main.sync{
}
}