このコードを見てください:
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, nil), ^
{
NSLog(@"DISPATCH_QUEUE");//executed
//never goes further
dispatch_sync(dispatch_get_main_queue(), ^
{
NSLog(@"MAIN_QUEUE");
});
NSLog(@"END OF DISPATCH QUEUE");
});
このコードは通常のプログラム フローと同じように実行されると思っていましたが、常にコンソール ワードが挿入され、それDISPATCH_QUEUE
以上先に進むことはありません。プログラムは停止するだけです。なぜこのように動作するのか、誰かが説明できますか? それを止める舞台裏で何が起こっているのですか?