1

現在、クロスプラットフォームのタスクスケジューラに取り組んでいますが、セマフォの待機中にsem_waitが回転する問題が発生しています。Windowsでは、WaitForSingleObjectを使用しています。これは、待機中にスレッドを生成します。これは、私が望んでいることです。ただし、sem_waitを使用すると、スレッドがスピンするだけで、非効率的で不要です。単に回転するのではなく、sem_waitにスレッドを生成させる方法はありますか?

ありがとう

4

1 に答える 1

2

セマフォの代わりに条件変数を使用してみることができます。機能は完全に同じではありませんが、使用法によっては、代わりに使用できる場合があります。これらはWindowsイベントと同様に機能し、条件変数を待って何かが発生するのを待ち、条件変数に信号を送って何かが起こったことを示します。

pthread_cond_waitに類似してWaitForSingleObjectおり、pthread_cond_signalに類似していSetEventます。

于 2011-04-10T03:19:22.803 に答える