関数:dispatch_sync
を使用して同期ブロックを実行すると、アプリケーションから取得したキューdispatch_get_main_queue()
がハングし、ブロックは実行されませんが、:から取得したキューを渡すと、dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
問題なく動作します。
dispatch_queue_t q;
q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//q = dispatch_get_main_queue(); //If uncommented the app hang
dispatch_sync(q , ^{
NSLog(@".");
});
から取得したキューを使用するdispatch_get_main_queue()
と、アプリがハングし、ブロックが実行されないのはなぜですか?