1. 程式人生 > >主程序中GCD用main queue會卡死但新生成queue卻沒問題

主程序中GCD用main queue會卡死但新生成queue卻沒問題

主程序中新增任務到GCD的main queue會卡死,而如果用生成的queue卻正常執行,原因暫時不明,貼上來記錄下。

dispatch_queue_t squeue = dispatch_queue_create("squeue", NULL);

dispatch_sync(squeue, ^{
        NSLog(@"Task 1-->%@", [NSThread currentThread]);
});

主程序中執行以上程式碼沒問題,但是當squeue換成main queue時,就會卡死:

dispatch_queue_t squeue = dispatch_get_main_queue();

--------------------------------------------

問題已在stackoverflow解決。

因為所有code都執行在主佇列中除非指定了其他queue,所以sync()本身也在主佇列,那當然會卡死。另外說句還是老外認真一點,針對提問核心進行回答。牆內的都在貼網搜的解答。