WaitForMultipleObjects
マルチプラットフォームプロジェクトの機能が必要です。
これを置き換えるためにBoostから何を使用できますか?
1 に答える
私はこの質問に対する答えを見つけました:存在しません。
しかし、私はhttp://lists.boost.org/Archives/boost/2004/12/77175.phpで見つけて答えました
希望は他の人のために役立つでしょう
条件を待つことと複数のオブジェクトを待つことは、一見するとそれほど密接に関連しているようには見えません。条件は状態を保持しませんが、待機しているハンドルは状態を保持します。状態は、状態変化が発生したことを示すだけです。具体的には、ミューテックスによって保護されているセラチン(グループ)変数の状態変化。むしろ必要なのは、提供されたオペレーティングシステムのハンドルが状態を変更したときに特定の状態が通知されることです。メンバーとして合図する条件で小さなクラス「wfmo」を作成しました。このクラスには、オペレーティングシステムのハンドルを追加するメンバー関数があり、WaitForMultipleObjectsをブロックするスレッドを内部的に作成します。戻ると、状態を知らせます。
これは機能しています。しかし、それは実際的な方法でのみ問題に対処していると思います。(また、追加のスレッドによる実行時のオーバーヘッドが無視できない場合もあるのではないかと思います。)追加のスレッドを廃止するには、待機しているオブジェクトのハンドルを受け入れるようにcondition.wait()を変更する必要があります。にとって。内部的には、待機は現在WaitForSingleObjectを使用しています。それらをWaitForMultipleObjectsに置き換えるのは簡単な作業です。ただし、オペレーティングシステムのハンドルを提供する必要があります。そして、これは移植性を壊します。本当の問題は次のとおりです。Boostには現在、独自のIOハンドルなどを定義する低レベルのIOの概念がありません。このトピックはリストで繰り返し議論されていますが、これらの問題に対処する提案は(少なくとも正式には)まだありません。はい、ネットワーキングなどについての提案はありますが、一般的な(低レベルの)IOについては提案されていません。(その上に、ネットワークを構築する必要があると思います。)