現在、クロスプラットフォームのタスクスケジューラに取り組んでいますが、セマフォの待機中にsem_waitが回転する問題が発生しています。Windowsでは、WaitForSingleObjectを使用しています。これは、待機中にスレッドを生成します。これは、私が望んでいることです。ただし、sem_waitを使用すると、スレッドがスピンするだけで、非効率的で不要です。単に回転するのではなく、sem_waitにスレッドを生成させる方法はありますか?
ありがとう
セマフォの代わりに条件変数を使用してみることができます。機能は完全に同じではありませんが、使用法によっては、代わりに使用できる場合があります。これらはWindowsイベントと同様に機能し、条件変数を待って何かが発生するのを待ち、条件変数に信号を送って何かが起こったことを示します。
pthread_cond_wait
に類似してWaitForSingleObject
おり、pthread_cond_signal
に類似していSetEvent
ます。