Python条件変数にwait()
を呼び出すと、呼び出しスレッドは実行と保留を中断しますか、または次のコンテキスト切り替えまでブロックされ続けますか?それは通知()、または別のスレッドで同じ条件 変数のnotifyAll()呼び出しで を覚醒されるまでPythonのthreading.Condition.wait()はすぐに実行を中断しますか?
答えて
スレッドが降伏します。この降伏は、pthread_cond_wait
の実装またはPyThread_acquire_lock
の同等のサスペンドメカニズムによるものです。条件変数はシステムコールインタフェースを使用して実装され、Pythonはネイティブスレッドを使用するため、オペレーティングシステムスケジューラは別のスレッドへの切り替えを行います。
また、GIL is releasedをPythonの内部構造の内部に呼び出す前に。最後にパズルの最後の部分はthreading.Condition.wait
でロックを取得する呼び出しです。
待ち()メソッドは、ロックを解除し、その後ブロック。復帰するとロックを再度取得し、 が返されます。タイムアウトを指定することもできます。
条件が通知されるまでブロックされます。
それを信じて、実際にマニュアルを読むことを実際に試みました。実行を「ブロック」する場合、代わりにスピンロックを使用するのはなぜですか? –
スピンロックで待機中のスレッドはCPUを消費しますが、条件で待機しているスレッドはCPUを消費しません。スピンロックは、ロックが保持され、急速に解放される場合に便利です。条件は、私たちがどれくらい待つかわからない場合に役立ちます。 –
OK、つまりスレッドの利便性は? –
- 1. Linux:実行中のPythonスクリプトをsystemdですぐに削除させますか?
- 2. Python Asyncoreは、クライアントの切断時にhandle_readを実行します。
- 3. AppleScriptはメールメッセージを移動した後に実行を中断しますか?
- 4. AVAudioPlayerNode scheduleBuffer interruptsAtLoopがすぐに中断しています
- 5. Safari/Webkitインテリジェントトラッキング防止(ITP)はiframeで実行中のアプリケーションを中断します
- 6. JavaScript関数の実行を中断できますか?
- 7. Python Scrapy断続的に実行中のパイプライン
- 8. Powershell - 外部プログラムの実行中にスクリプトを中断する
- 9. Verticaのスクリプトの実行を中断または中断する(またはエラーを発生させる)方法
- 10. どのようにアラートがジャバスクリプトの実行を中断しますか?
- 11. デバッグのためのjavascriptでの実行の中断/中断
- 12. 実行中にFTPホストサーバーから切断する方法は?
- 13. PDBでPython Flaskサービスを実行しているとき、どのようにポーズ/中断しますか?
- 14. 実行中のDockerコンテナのメモリをすぐに解放します
- 15. VBA - マクロが中断したときにコードを実行する
- 16. IntelliJデバッギング:VM全体を中断してからシングルスレッドを実行します
- 17. 実行中のEmacs Lispプログラムを中断する
- 18. python asyncIOはどのようにタスクを中断し、再開しますか?
- 19. Angular2 - 実行中のhttp要求の呼び出しを中断/キャンセルする方法はありますか?
- 20. ResolveHostNameAsyncはトゥームブースティングを中断しますか?
- 21. キーボードコマンドでRの実行中のコードを中断するにはどうしたらいいですか?
- 22. ScheduledExecutorServiceは具体的なタスクの定期的な実行を中断します
- 23. ボックスメッセージなしのトリガー実行を中断する(tsql)
- 24. AndroidはすぐにBluetoothの切断を検出します
- 25. 外部コールによってファンクション/コールバックの実行を中断できますか?
- 26. スクリプトの実行中にMacがシャットダウンするのを防ぐ
- 27. ボタンプレス(Arduino)に基づいて実行中のwhileループを中断する方法はありますか?
- 28. 並行性 - 未来を中断せずに中断する
- 29. 実行時に実行中のOSをアセンブリ言語で判断する方法は何ですか?
- 30. setFrameは、QTreeWidgetの行のハイライトを中断します。
私はその実装に依存していると思います。奇妙なCPythonスレッドはおそらくそうではありませんが、それはあいまいなメモリからの推測に過ぎません。 –