これは、マルチスレッドシナリオでの例外処理シナリオ用です。必要に応じて相互排他の下にロックされた共有リソース上で、複数のスレッドが並行して動作しています。あるスレッドが例外に直面した場合、sem_trywaitを使って他のスレッドがセマフォを待っているかどうかを調べることができます。また、セマフォを待っているスレッドが見つかったら、例外が発生したというフラグを使用します。待っているスレッドが待っていて、さらに進める前に何らかの例外が発生したかどうかを確認することができます。例外が発生した場合、待機していた他のスレッドは、ここで正常な終了に向かいます。提案してください。 私の実際のqsは:sem_trywaitを使用できますか?誰かが共有セマフォを待っている場合、C Posixスレッドをチェックインする方法は?
1
A
答えて
2
最も簡単な解決策は、スレッドステータスの追加メカニズムを設定することです。セマフォは、誰かが待っているかどうかを示すためのものではありません。ない場合は、いくつかのスレッドがセマフォと0
を待っている場合のみ、スレッドによって書かれている世界的に目に見える変数で
、—に設定するには、1
—を言います。スレッドがセマフォを取得したいかどうかを知りたければ、変数の状態を調べてください。操作を正しく順序づけることによって変数をサンプリングする競合状態を処理することは、あまりにも困難ではないはずです。
関連する問題
- 1. POSIX共有メモリを使用する場合、POSIXセマフォはどこに置かれますか?
- 2. 待ち(POSIXスレッド、C++)
- 3. 私はPOSIXスレッドでいくつかの混乱を持っているPOSIXスレッド
- 4. なぜいくつかのposix共有メモリセグメントとposixセマフォがipcsに見えない
- 5. ユーザアカウントがアクティブな場合にC#をチェックインする方法
- 6. プロセスがセマフォを待っている場合は、CPUに割り当てますか?
- 7. C++でスレッドを共有するスレッド
- 8. 正規表現が有効な場合、Swiftをチェックインする方法は?
- 9. marshmallowのデフォルト共有を使って共有する方法は?
- 10. FacebookのグラフAPIを使って誰かの投稿を共有する方法
- 11. 1つのPOSIXスレッドで2つの異なる待機メカニズムを結合する方法はありますか?
- 12. セマフォと共有メモリ
- 13. 変数がJSONオブジェクトの場合、node.jsをチェックインする方法は?
- 14. セマフォは有界待ちを満たす
- 15. C、forkされたプロセスでPOSIXセマフォを使用するには?
- 16. C++、プロセスやスレッド間でデータを共有する方法
- 17. スレッド間でメッセージキューを共有する(Windowsの場合)
- 18. Cスレッドの待ち合わせ方法
- 19. posixセマフォをロックするプロセスの優先順位付け方法
- 20. スレッドのリストが完了するのを待つ方法は?シングルスレッドの場合(パイソン)
- 21. POSIXセマフォ:sem_timedwait代替
- 22. Facebook - 誰がリンクを共有しているかを確認
- 23. 誰かが他のすべてのサブアレイをマージする方法を知っている場合
- 24. 1つのスレッドだけがmutexを使用する場合、スレッド間の共有メモリが壊れますか?
- 25. ソケットハンドラを持っていない場合、ソケットがまだ接続されている場合、PHPをチェックインする方法は?
- 26. ファイルパーミッションが755より大きい場合、Perlをチェックインする方法は?
- 27. Google Classroomアプリがインストールされている場合は、共有する方法はありますか?
- 28. FreeBSDで開いているposix共有メモリセグメントのリストを取得するには
- 29. Pythonマルチプロセッシングを使用してファンクション付きセマフォを共有する
- 30. ミューテックスとセマフォを使用して共有データを操作する
実際の質問は何ですか? –
@ammoQ、sem_trywaitを使ってチェックできますか? –
セマフォーを取得するかどうかは、すべて行います。誰かがそれを待っているかどうかは分かりません。 – wallyk