0

私の理解によれば、セマフォの値を1から0に減らした後にプロセスがダウンした場合、セマフォの値は0のままです。

同じプロセスが再び起動し、同じセマフォを再取得しようとすると、永久にブロックされます。

プロセスが異常終了した場合、セマフォ値をデクリメントした後に 1 にリセットする方法はありますか?

4

1 に答える 1

1

セマフォには標準の semctl()/semop() API を使用していると思います。

プロセスが終了した場合にカーネルにセマフォの値をリセットするように指示する SEM_UNDO と呼ばれる使用可能なフラグがあります。semop( ) 呼び出しでこれを使用する必要があります。

詳細はこちら: http://beej.us/guide/bgipc/output/html/multipage/semaphores.html

于 2011-09-23T15:58:11.717 に答える