如果从主线程外部调用dispatch_main会发生什么?

时间:2013-05-14 15:32:39

标签: macos grand-central-dispatch

dispatch_main函数用于使主线程启动处理块分派到主队列。因此,dispatch_main是一种运行循环,它不会返回,并且在处理已排队的块之后,等待其他块提交到主队列。

那么,如果从主线程外部调用dispatch_main会发生什么?如果主线程正在处理另一个函数,它是否被中断以允许主线程处理排队的块?是否允许从主线程外部调用dispatch_main

1 个答案:

答案 0 :(得分:8)

dispatch_main()在从主线程外部调用并中止进程时断言,只能从主线程调用它。

dispatch_main()实际上只是伪装pthread_exit()(参见implementation):它将主队列转换为普通的串行调度队列,然后终止主线程。

主队列将从该点开始由按需工作队列线程提供服务,就像任何其他调度队列一样。