そのようなケースを回避するためのサンプルを作成しました。
※このサンプルで実施できる「ロック」は、「仲間内でのお約束」的なロックです。この方法によってロックしていることを知らない人がダイレクトにファイルにアクセスした場合に対しては、このサンプルが用いる「ロック」は無力です。
以下ソース
実行画面
「lock開始」ボタンを押すとインプットボックス内に記載されたPathのファイルを「ロックしています!と宣言」します。(path+".lock"というファイルができているのがその宣言の証)

この「*.lock」ファイルはlock中はhtaから書き込みストリームが開きっぱなしの状態になっているので、削除したり、他のhtaから書き込みストリームを開くことができません。

ロックしたいファイルのPath+".lock"というPathに対して書き込みストリームを開ければロック成功、開けなければロック失敗という独自のルールを作って、整合性を保ちたいファイルを保護しています。
その独自のルールに従うプログラムの間でのみ、このロックは意図通りに機能します。
0 件のコメント:
コメントを投稿