- 78 名前:「このサイトの人」 [02/06/28 01:42 ID:lpc8XUFV]
- おかげさまで、rename失敗の場合について考える機会を持てました。
とりあえず結論出しておきます。 rename失敗の殆どの場合、何も起こらなかった、つまり古いロック 1とロック2 が両方残ることになるでしょうから、その時には他のプ ロセスが侵入することはありません。 万一、ロック2が消え古いロック1が残ると排他は失敗しますが、そ の場合、ロック2のディレクトリが消失したか、違う名前にrenameさ れたことになりますね。ファイルシステムのエラーによって、絶対 起こらない事とは言えませんが、そこまで考慮する必要があるのか どうかは疑問。 疑問ではありますが、あえて考慮するなら、上記のわたしの排他制 御で、 rename($lockdir2, $lockdir) or &error("LOCK ERROR"); として、rename失敗したプロセスを、その時点で終了させることに すれば問題なくなります。 ごく稀にロック2が残る可能性は残りますが、ロック1が残る可能性 より低いのですから、残存ロック削除機能付きの排他方法として、 それなりに使えるのではないかと。 では。
|

|