アンロックは必要?

[上に] [前に] [次に]
Visual Perl 2000/03/10(金) 02:50:29
立て続けで申し訳ないのですが、ついでに他の疑問も質問させてください。

http://www.tohoho-web.com/wwwperl2.htm#flock
に 
> 8 ロック解除(アンロック)
というのがありますが、その直ぐ下のほうにclose()で自動的にアンロックされると記述されています。
さらに、アンロックをflock8で行うと排他制御が上手くいかないとなっています。

と言う事で、書く必要が無いと言うことはわかりましたが、それならflock8は何の為に存在するのでしょうか?
明示的にアンロックするような必要があるケースというのは、あるのですか?
またあるとしたらどのような時なのでしょうか?

知ってる方は教えてください。

コウノトリ 2000/03/10(金) 10:27:21
open ( +< )

flock(2)

書き込み

flock(8)

関係ない処理

flock(1)

読み込み

close()

とすれば、関係ない処理をやっている間に他プロセスに
ファイル操作を解放できます(他に思い付かない)。

Visual Perl 2000/03/10(金) 20:26:15
なるほど
必要以上のロックを回避するときに使うわけですね。

でも実際にファイルに書きこまれるのはclose()するときなのでは?
そうならば、コウノトリさんの方法だとロックに隙ができるのではないでしょうか?

とか思ったんですけど、実際どうなんでしょう?
全然問題ないんですか?

しなのむし 2000/03/10(金) 21:49:35
>でも実際にファイルに書きこまれるのはclose()するときなのでは?

$| = 1; 
とすれば、printを実行する度に出力をフラッシュ出来ますが。

しなのむし 2000/03/11(土) 15:09:22
追記:

perl 5.004 からflock(FH, 8)の直前で
バッファがフラッシュされるようになったみたいですね。

[上に] [前に] [次に]