私はWin32上でPOSIXスタイルの条件変数を使用したいと考えています。私はXP上で実行する必要があるいくつかのコードがあるので、私はVista/Server 2008のCONDITION_VARIABLE
を使用することはできません。XP用WinthreadsのCRITICAL_SECTIONsの条件変数の実装
現在、擬似条件変数クラスを使用しています。これは、クリティカルセクションを離れ、シグナリング/スリープ解除のための自動リセットイベントを通知することに基づいています。条件変数を待つために、イベントにクリティカルセクションWaitForSingleObject
を残して、クリティカルセクションに再び入ります。これは大部分は問題ありませんが、放送はサポートされていませんし、フェアネスに関して他の問題もあるかもしれませんが、私はあまり気にしません。
私はブーストを使用するので、条件変数をサポートするブーストスレッドまたはpthreads-win32を使用できることはわかっていますが、理想的には、インタフェースを私がMicrosoftの実装でドロップできるようにしたいと思っています。それを直接使用することが可能になります。私はStrategies for Implenting POSIX Condition Variables on Win32を見ましたが、 "ベスト"(最も正確な)ソリューションは、CRITICAL_SECTION
ではなく、ミューテックスを使用しています。 second partにCRITICAL_SECTION
という実装のスケッチがありますが、それは完全ではなく、CRITICAL_SECTION
のその他の解決策は記事に記載されている懸念から私に関心を寄せています。
要するに、Microsoftの実装が利用可能になったときに重要なセクションのwin32で条件変数を正しく(必ずしも良いとは限りませんが)実装することはできますか?
いいね!どうもありがとう。 –