0

Grand Central Dispatch のメイン スレッドとは正確には何ですか? main()勝手に「メインスレッド」と呼ばれる、プログラムの起動時(関数が呼び出される直前など)に作成されるスレッドでしょうか。それとも、実行中のプロセスごとに常に作成されるプログラムのメイン実行フローですか? これが明示的に行われない限り、プログラムのメイン実行フローによって実行されるブロックを送信することはできないため、最初のオプションが正しいと思います。したがって、GCD のメイン スレッドは、ブロックの実行を待機するために作成された別のスレッドでなければなりません。そうですか?

4

2 に答える 2

1

OS X 上のすべての UI アプリケーションにはメイン スレッドがあります。これは、UI の更新が実行される (および実行される必要がある) 場所です。GCD はキューをこのスレッド (メイン キュー) に関連付け、このスレッドで他のキューからのブロックを自由に実行できますが、実際には、この目的のために他のスレッドを作成します。任意の長さ (そうすることで、恐ろしい SPOD、または回転する死のピザ、カーソルが表示されます)。

また、dispatch_main() を呼び出しても、メイン スレッドの必要性が失われたり不要になったりするわけではなく、単純にブロックされます (これが、代わりに UI アプリが実行ループを使用する理由です)。

于 2013-05-03T15:17:19.513 に答える