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. AppleScriptはメールメッセージを移動した後に実行を中断しますか?
- 3. Powershell - 外部プログラムの実行中にスクリプトを中断する
- 4. JavaScript関数の実行を中断できますか?
- 5. デバッグのためのjavascriptでの実行の中断/中断
- 6. どのようにアラートがジャバスクリプトの実行を中断しますか?
- 7. 実行中にFTPホストサーバーから切断する方法は?
- 8. 実行中のEmacs Lispプログラムを中断する
- 9. IntelliJデバッギング:VM全体を中断してからシングルスレッドを実行します
- 10. ResolveHostNameAsyncはトゥームブースティングを中断しますか?
- 11. ボックスメッセージなしのトリガー実行を中断する(tsql)
- 12. キーボードコマンドでRの実行中のコードを中断するにはどうしたらいいですか?
- 13. 並行性 - 未来を中断せずに中断する
- 14. 実行中のプロセス(主にPythonは)
- 15. Python:スレッドがまだ実行中です
- 16. pythonはすでに実行中のカウントダウンに時間を追加します
- 17. AndroidはすぐにBluetoothの切断を検出します
- 18. いつ実行して、Django管理コマンドを中断する
- 19. Python RQですでに実行中のタスクをキャンセルしますか?
- 20. 実行時に実行中のOSをアセンブリ言語で判断する方法は何ですか?
- 21. element.innerHTMLの変更中にすぐに関数を実行する方法は?
- 22. Android ScheduledThreadPoolExecutorは遅延タスクをすぐに実行します
- 23. pythonファイルを実行中
- 24. Pythonで実行中のコマンドを終了しています
- 25. 実行中にpythonサブプロセスと通信します
- 26. なぜPythonのTkinterはcanvas.create_imageを使って中断しますか?
- 27. SQL Server 2005 - すぐに中断状態になるクエリ
- 28. ヒントがタイマーを中断するのを防ぐ方法
- 29. Pythonスクリプトの実行中にエラーが発生しました。
- 30. pythonファイルの実行中にエラーが発生しました
私はその実装に依存していると思います。奇妙なCPythonスレッドはおそらくそうではありませんが、それはあいまいなメモリからの推測に過ぎません。 –