4

dispatch_main函数用于使主线程开始处理分派到主队列的块。所以,dispatch_main是一种运行循环,它不返回,在处理完已经排队的块后,等待其他块提交到主队列。

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

4

1 回答 1

8

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

dispatch_main()实际上只不过pthread_exit()是伪装(参见实现):它将主队列变成普通的串行调度队列,然后终止主线程。

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

于 2013-05-14T17:44:50.913 回答