-PR-
解決
済み

ロックファイルの確実性について

  • 暇なときにでも
  • 質問No.80338
  • 閲覧数76
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 75% (9/12)

たとえばカウンタなどを作ろうと思ったとき、データを保存する
ファイルを2重にアクセスできないようにするために、ロックファ
イルを用意するのが一般的だと思います。
しかし、単にロックファイルを作って、それを

if (-e $lockfile) {~~}

などとやっても、けっこう頻繁に2重アクセスされてしまいます。
実際、以前、1000アクセス/日あるページを運営していたとき、上の
方法では3日に1回は壊れました。

上の方法は、理論上はありえないはずなのに、なぜおこるのでしょうか?

また、ロックファイルではなくロックディレクトリを作って、

unless (mkdir ("./lock", 0777)) {~~}

と行うことによっても、同様の判定が可能かと思いますが、
こちらの方法でもやはり2重アクセスが発生してしまうことが
あるのでしょうか? その確立は、ロックファイルと同一レベル
でしょうか? また、発生するならば、ディレクトリシステム上に
同じ名前のディレクトリが2つ存在することになるのでしょうか?

もしわかる方がいらっしゃいましたら、ぜひ教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 75% (398/526)

下記のページが、非常に参考になります。
(左記:とほほのWWW入門、右記:大崎博基氏のHP)

なぜ壊れてしまうのか、については左記のHPを、
壊れない方法については両方のHPを参考にしてみてください。

1000Page/day程度のアクセスで壊れることはなくなるでしょう。
お礼コメント
posha

お礼率 75% (9/12)

ありがとうございます!

さっそく参照してみたところ、期待していた以上の情報を得ることが
できました。おそらくは何の問題もなくロックできそうな気がします。

こんなとびっきりの情報をいただいておきながらナンですが、
万が一のためにも、今日いっぱいだけ受け付けさせてください。
投稿日時 - 2001-05-24 07:25:46
関連するQ&A
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル11

ベストアンサー率 58% (114/195)

ファイルのオープン時は、多分 ・lockfileの生成 ・データファイルのオープン ・lockfileがあるかを判別し、条件分岐 という順番で手続きを取っていると思いますが、ファイルクローズ時はどういう順番で閉じられてますか? 補足お願いします ...続きを読む
ファイルのオープン時は、多分
・lockfileの生成
・データファイルのオープン
・lockfileがあるかを判別し、条件分岐
という順番で手続きを取っていると思いますが、ファイルクローズ時はどういう順番で閉じられてますか?
補足お願いします
補足コメント
posha

お礼率 75% (9/12)

全体の流れとしては、

1) ロックファイルについての条件分岐
2) ロックファイルの生成
3) データファイルのオープン
4) データ読み出し&処理
5) データファイルへの書き込み
6) データファイルクローズ
7) ロックファイル消去

の順番で行っています。

ご指摘のように、ロックファイル生成の後で
ロックファイルがあるかどうかを判別するのは、
アルゴリズム的に矛盾があったりしませんか?
投稿日時 - 2001-05-24 07:07:04


このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ