>open の時点で $file が破壊されるってことですね。 はい,あと引数'2'だと,待っている間何も出来なくなるので マズイ,ということで2箇所...としました. シグナル起こしはあてにならないということで. >デッドロックを回避できるからこそ flock の価値があるんではないでしょうか? デッドロックは起きます. flockには価値なんかありません.BSDでの互換性だけです. 言葉遊びでなく,確率というか危険度と考えてください. flockして成功したプロセスが無限ループに入ったとき, 解除にはたいがいプロセス殺しが必要です.うまく殺せるか どうかは不確実なので,この時点でデッドロックといえます. symlinkやmkdirでの排他処理だとまだ通常のファイル操作で済みます. >それとも、セマフォとかの待ち行列の状態が検知できないという意味でしょうか? はい,検知と制御ができません.同じ意味でfcntlやセマフォも 使うのは難しいです.OSリソースを隠れて消費し,工夫しないと システム全体の速度が低下します. OSに付属する排他処理機構を,よく検証せずに使うのはまずいです. 私の経験だと, - いつどのプロセスが何をロックして - それを参照する何個のプロセスがどれくらいの時間待機しているか 外から判るようにしなければだめな感じです. >訳の分からない排他制御手段を考える人が出て来るような気が 他人の手法を参考のうえ,排他処理の仕組みを自分で考えるのは 結構なことだと思います. |