スレッドを終了するよう通知するイベント(::CreateEvent(...)
で作成)を使用する場合は、スレッドを終了するか、イベントハンドル(::CloseHandle(...)
)を閉じる前にそのイベント(::ResetEvent(...)
)をリセットする必要がありますか?または、スレッドが再起動される可能性がある場合、それは良い習慣ですか?これはWindows環境用です。ありがとう。スレッド終了イベント - C++
1
A
答えて
2
使用するイベントのセマンティクスによって異なります。
イベントを使用して複数のスレッドを終了させる場合は、各スレッドでイベントをリセットしないでください。 1つのスレッドだけをトリガーするためにそれを使用すると、それはさらにセマンティクスに依存します。イベントが他のスレッドに他のものを通知するために使用される場合は、ダイスレッドでイベントをリセットする必要があります。それ以外の場合、イベントが単一のスレッドが死ぬことを通知するためにのみ使用され、それ以外の場合はイベントをリセットできます。このイベントが通知された結果、目を覚ますことはありません。
リソースリークを防ぐためにイベントをリセットする必要はありません。あなたがする必要があるのはCloseHandle()
3
リセットイベントを呼び出す必要はありません。ハンドルを閉じると、それに関連付けられたイベントはもはや有効にならないためです。
0
です。ハンドルを閉じる前に、イベントの設定状態を反転する必要はありません。 さらに説明すると、イベントの設定状態は、その存在とは無関係です。あなたが気付いているように、CreateEvent(...)関数はイベントの初期状態を設定することを可能にします。だからあなたがそれを設定して初期化すれば、それはCloseHandle()の前にセットされているはずですか?もちろん、設定された状態はまったく重要ではありません。クラスのメンバーを破棄する前に、クラスのメンバーを開始状態にリセットすることに似ています。
関連する問題
- 1. Pythonでのスレッド終了イベント
- 2. キャプチャ.Netスレッド終了イベント
- 3. C#のアプリケーション終了イベント
- 4. スレッド終了の問題(C):最後のスレッドが終了しない
- 5. ウィンドウフォーム終了イベント
- 6. スレッド終了コールバック
- 7. 親スレッド終了時に子スレッドが終了する
- 8. C#でスレッドを終了するには?
- 9. フォーム終了イベント
- 10. Qtアプリケーションキャンセル終了イベント
- 11. SolrJ未終了スレッド
- 12. スレッド:スレッドがジョブを終了する前に終了する
- 13. アプリケーションの終了イベントの終了
- 14. .NETコンソールアプリケーション終了イベント
- 15. カスタムの終了イベントとデフォルトの終了イベントの違い
- 16. Pythonでのスレッド化(スレッドの終了)
- 17. スレッドを終了するスレッドを待つ
- 18. Xcodeでスレッド終了をキャッチ
- 19. Pythonスレッドの終了コード
- 20. スレッドを終了する
- 21. クリック待ちの終了スレッド
- 22. スレッド終了の検出
- 23. Cordovaアプリの終了イベント
- 24. Vimeo Player付きイベント - 終了
- 25. Java SWTシェルウィンドウの終了イベント
- 26. .offアニメーション終了イベントをアンバインド
- 27. Pygletのウィンドウの終了イベント
- 28. 検出ページ終了イベント
- 29. JSイベントの終了ループ
- 30. 更新イベント終了(updateEvent)
もっと具体的にしてください。私。いくつかのコードが役に立ちます。私が知っている唯一の良い習慣は、あなたが提供した情報を与えられていることです。::イベントがもはや必要でなくなるとすぐにイベントハンドラでCloseHandleが呼び出され、後でイベントを使用しようとしないようにしてください – ds27680