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

Lui*_*BOL 4 macos grand-central-dispatch

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

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

das*_*das 8

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

dispatch_main()除了pthread_exit()伪装之外什么都没有(参见实现):它将主队列转换为普通的串行调度队列,然后终止主线程.

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