dispatch_main
函数用于使主线程启动处理块分派到主队列。因此,dispatch_main
是一种运行循环,它不会返回,并且在处理已排队的块之后,等待其他块提交到主队列。
那么,如果从主线程外部调用dispatch_main
会发生什么?如果主线程正在处理另一个函数,它是否被中断以允许主线程处理排队的块?是否允许从主线程外部调用dispatch_main
?
答案 0 :(得分:8)
dispatch_main()
在从主线程外部调用并中止进程时断言,只能从主线程调用它。
dispatch_main()
实际上只是伪装pthread_exit()
(参见implementation):它将主队列转换为普通的串行调度队列,然后终止主线程。
主队列将从该点开始由按需工作队列线程提供服务,就像任何其他调度队列一样。