>  投稿者:ハッカ飴 2002/07/26 (金) 04:50:04        [mirai]
> > 1回のflockで、複数のファイルにflockしたのと同じ効果を出させる方法だよ。
> それをどのようにして実装しようと貴殿は考えていたのかね?

1つのファイルについて、解除無しに排他的ロック→共有ロックができれば、だけど・・・
1つのファイルを用意する、これを「ロックを掛けるファイル」略して「lockfile」とするだろ?
この内容はファイルの使用状況(不使用|読み|読み書き)の繰り返しだ。
1文字1要素とした文字列だな。
つまり、1つのlockfileに複数のファイル使用状況が記録されるわけだ。

で、ロック処理な。
まずlockfileに排他的ロックを掛ける。
この排他的ロックはlockfileを確実に書き換えるためのものだ。
ロックに成功したら、内容を書き換える。
どう書き換えるかというと、これから行うファイル処理に合わせて。
全ファイルについて、(使わない|読み|読み書き)の3つで、どう使うのか決めるんだ。

その後で排他的ロック→共有ロック。
この共有ロックは「lockfileに記録されている使用状況で、処理中のプロセスがある」
ということを表す。
このロックが利いているうちは、lockfile内の使用状況書き換えは行われないし、
他のプロセスからもロックできる。

つまり、この方式の利点は、1回のflockで、複数ファイルを最大限共有するロックを掛けられるということ。

よく使われるような方法だと、全ファイルを一緒くたにして排他的ロックとか、
一緒くたにして共有ロックとかだろ?
排他的、共有はファイルごとにやると効率が良いんだ。

参考:2002/07/26(金)04時19分08秒