该dispatch_main
函数用于使主线程开始处理分派到主队列的块。所以,dispatch_main
是一种运行循环,它不返回,在处理完已经排队的块后,等待其他块提交到主队列。
那么,如果dispatch_main
从主线程外部调用会发生什么?如果主线程正在处理另一个函数,是否为了让主线程处理排队的块而中断它?是否允许dispatch_main
从主线程外部调用?
该dispatch_main
函数用于使主线程开始处理分派到主队列的块。所以,dispatch_main
是一种运行循环,它不返回,在处理完已经排队的块后,等待其他块提交到主队列。
那么,如果dispatch_main
从主线程外部调用会发生什么?如果主线程正在处理另一个函数,是否为了让主线程处理排队的块而中断它?是否允许dispatch_main
从主线程外部调用?
dispatch_main()
在从主线程外部调用时断言并中止您的进程,它只能从主线程调用。
dispatch_main()
实际上只不过pthread_exit()
是伪装(参见实现):它将主队列变成普通的串行调度队列,然后终止主线程。
从那时起,主队列将由按需工作队列线程提供服务,就像任何其他调度队列一样。