バックグラウンドスレッドでネットワークの処理をしていて、バックグラウンドメソッドのいくつかが 'performSelectorOnMainThread'コールを行うと、これらの呼び出しは現在のコードブロック(メインスレッドで実行中)の実行を中断しますか?PerformSelectorOnMainThreadは現在のコードブロックを中断しますか?
0
A
答えて
1
いいえ、そうすることはできません。 performSelector
のメソッドグループは、実行ループのアクションをスケジュールします。現在のコードブロックが実行ループに戻ると、これらのアクションが実行されます。 ( "現在のコードブロック"とすると、あなたのコードがメインスレッド上で実行されていることを意味します)
1
waitUntilDone
がYES
に設定されている場合は、絶対にperformSelectorOnMainThread
を呼び出すコードの実行を中断します。 NO
に設定されている場合、セレクタはメインスレッドで実行されるようにキューに入れられます。
performSelectorOnMainThread
の呼び出し元がメインスレッドでない場合、「現在のコードブロック」が終了する前にセレクタが実行されるかどうかは、CPUの状態に完全に依存します。複数のCPUが存在する可能性があります。 2つのスレッドが同時にスケジュールされている場合や、あるOSが現在のスレッドではなくメインスレッドのスケジュールを決めている可能性があります。
基本的に、これらの呼び出しは、マルチスレッドプログラミングから慣れているのと同じように、現在のコードブロックの実行を中断することがあります。
[「現在のコードブロック」と私はあなたがの発信者を意味想定していますperformSelectorOnMainThread
]
更新:
ああ、右、あなたはそれが現在実行されているコードを中断することができます」を意味しますメインスレッドで? "それに対する答えは間違いありません。メインスレッドの実行ループで、ループの次回実行時にスケジュールされます。
関連する問題
- 1. TTPhotoViewControllerは現在の中心画像を取得しますか?
- 2. QNetworkAccessManagerデストラクタは現在のリクエストを中止しますか?
- 3. ResolveHostNameAsyncはトゥームブースティングを中断しますか?
- 4. 現在実行中のブラウザの現在のWebアプリケーションを検出します。
- 5. 現在実行中のアクティビティのインスタンスを取得しますか?
- 6. 現在の接続を切断せずにpostgreSQLを再ロードしますか?
- 7. 現在のタグクラスを現在のページに適用しますか?
- 8. 現在再生中のビデオファイルの現在のフレームを取得する方法は?
- 9. iOS:UIAlertを表示すると、現在表示されているモーダルビューコントローラを中断できますか?
- 10. C#は、中括弧なしのコードブロックをサポートしていますか?
- 11. Java、スレッドを中断(中断)
- 12. Pythonは本の中で、現在のファイル
- 13. 現在実行中のコンソールアプリケーションでメソッドを呼び出します。
- 14. テスト中に現在の日付をシミュレートします
- 15. Pythonのthreading.Condition.wait()はすぐに実行を中断しますか?
- 16. VIM:現在のブロック内のすべてのコードブロックを折り畳む
- 17. DatagramSocket.receiveのスレッドを中断します
- 18. vimの現在の作業ディレクトリを現在のプロジェクトルートまたは現在のファイルのディレクトリに設定します
- 19. IOS現在再生中ボタン
- 20. ThreadPoolExecutorはアイドルスレッドをどのように中断しますか?
- 21. バインドされたDataGridViewで現在編集中のセルの更新を中断する方法はありますか?
- 22. HTML現在閲覧中のHTMLはどのブラウザですか?
- 23. Visual Studioのデバッグセッション中に現在のディレクトリを検索していますか?
- 24. 作者別に現在のコード配布を判断する
- 25. Swift 2で現在のインターネット接続を切断する
- 26. 現在のGCJの現状(2009年中頃)は?
- 27. set_time_limit()はグローバルか、現在実行中のスクリプトに対してのみですか?
- 28. Phonegapは画像キャプチャ中に現在の方向を返します
- 29. performSelectorOnMainThreadのブロックバージョン:withObject:waitUntilDone:
- 30. カスタムユーザークラスはdjangoでアプリケーションを中断しますか?
これは間違っています。これらの呼び出しは、メインスレッド上で実行中の現在のコードブロックの実行を中断することはできません。 – mvds
しかし、呼び出し元が別のスレッドで実行されている場合は... – mattjgalloway
申し訳ありませんが、現在のコードブロックがメインスレッドで実行されていることを反映するために質問を編集しました。 –