これを参照フレームとして使用すると、次の例が {couldnt} / {wouldnt} の結果、GCD スレッド プールがメイン スレッドで排他的に実行される理由はありますか?
int main()
{
dispatch_queue_t myQueue = dispatch_queue_create("myQ",NULL); // create serial queue
//
dispatch_sync(myQueue, ^{/*some simple block*/});
....
dispatch_sync(myQueue, ^{/*some simple block*/});
}
私の理解では、GCD は可能な場合はパフォーマンスを最適化し、(有益な場合は) ブロックを使用可能なスレッドに渡します。ただし、これを xcode で監視すると、これがメイン スレッドで排他的に実行されている可能性があることがわかります。async
2 番目のスレッドが使用されるのは、ディスパッチ呼び出しが行われるまでです。
いつ/なぜ2番目のスレッドが呼び出されるか、呼び出されないかを理解したいだけです。これより前は、2 番目のスレッドが常に呼び出されると想定していました。