0

セマフォはカウンティング オブジェクトです。問題は、複数のカウントでロックする方法ですか?

たとえば、関数を呼び出したいとしlock(num, timeout)ます。利用可能なリソースが少なくともある場合はロックするnumか、パスした場合は失敗しますtimeoutが、リソースがまだ 未満です num

Windowsで可能ですか?それともpthreadを使用していますか?

現在 Windows では、WaitForSingleObjectオブジェクトの数を だけ減らします1WaitForSingleObject次の理由により、複数回呼び出しても問題は解決しないと思います。

  1. 正確なタイムアウトを達成するのは難しく、

  2. numリソースがすべて利用可能なときにデータを処理 (ディスクへの書き込み) したい(大きなサイズのデータ​​を書き込む方が高速です)。したがって、たとえば、 num 個別にロックされているリソースが少ない場合、タイムアウトが経過しても残りはまだ使用できないため、次回のためにそれらを解放する必要がある場合があります (ロックした直後)。設計が悪いと思います。助けが必要です。

4

1 に答える 1