6

セマフォは機能するためにブロックする必要があるため、矛盾しているように見えます。

インターネット検索では、これが何を意味するかを定義するのに役立つものは何も表示されません。

4

3 に答える 3

7

セマフォの値が 0 の場合、セマフォに対するダウン操作は、誰かがリソースを解放してセマフォをインクリメントするまでブロックされます。

ノンブロッキング セマフォは、リソースが使用できない場合にダウン操作をブロックせず、むしろエラーを発生させます。これは、プログラムがすぐに、または実行を中断せずにそのリソースを必要とする場合に役立ちます。また、リソースが利用できない場合、プログラム ロジックは別のことを行うことができます。

于 2012-08-04T00:38:50.403 に答える
5

ノンブロッキング セマフォは通常、ブロッキングせずに取得を試みることができるセマフォを指します。セマフォを「ロック」できない場合、失敗しますがブロックはしません。ロックできる場合は、ロックして true (ロックしたこと) を返します。

于 2012-08-04T00:38:34.460 に答える
1

WaitForSingleObject()たとえば、関連する待機操作では、タイムアウト値dwMillisecondsを指定できます。このパラメータが0呼び出しの結果に設定されている場合、常にすぐに返されます。このようにして、セマフォの状態をブロックせずにテストできます。

于 2012-08-04T10:19:55.303 に答える