関数をチェックしていてsemop()
、構造体のフラグ値がsembuf
SEM_UNDO または IPC_NOWAIT のいずれかである可能性があります。では、フラグ値を 0 として渡す場合、どのような動作になりますか? どこかで読んだのですが、ノーオペレーションでした。どういう意味ですか?誰でも説明できますか?
1505 次
1 に答える
2
最善の方法は、仕様を読むことです — の POSIX 仕様semop()
ですべてが説明されています。
フラグが 0 の場合、操作によってセマフォが使用可能になるのを待ってプロセスがハングする可能性があることを意味し (フラグが含まれている場合IPC_NOWAIT
はハングしない)、セマフォの値が元に戻すように調整されないことも意味します。プロセスがクラッシュした場合の操作 (フラグが含まれている場合SEM_UNDO
、システムはセマフォ操作を元に戻すために必要な情報を記録します。それが安全であると見なされるかどうかは、あなた次第です。
于 2013-10-10T02:58:16.787 に答える