1

メイン キューを使用して UI スレッド (メイン スレッド) から dispatch_sync を実行することはまったく役に立たないという私の推論を確認したいだけです。

それに加えて、async も同様に役に立たないでしょうが、ブロックしないので便利であるという錯覚があります。

お知らせ下さい。

ありがとう

4

1 に答える 1

3

同じキューへのdispatch_syncは役に立たないだけでなく、アプリをロックします。dispatch_sync「何かをディスパッチしますが、他のキューが応答するまでこのキューを続行しないでください」と言います。「他の」キュー (ディスパッチされたブロックが完了するのを待っている) が「この」キュー (他のキューが応答するまでブロックされる) と同じ場合、これは明らかに起こりません。あなたのアプリはフリーズし、それ自体を待っています!

一方、dispatch_async現在使用している同じキューに対しては、一般的にあまり有用な構造ではありませんが、少なくともフリーズすることはありません。dispatch_async「いくつかの一連のアクションを終了するとすぐに、別のことをしたい」という言い方として使用される厄介なコードを見てきました。別の方法でよりエレガントに実行できない状況で、これが非同期的にディスパッチするのを見たことはほとんどありませんが、見たことはあります。

于 2012-12-09T03:29:36.367 に答える