C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 40 を表示中)
■20021 / )  Re[3]: ディレクトリの排他アクセス
□投稿者/ 774RR (187回)-(2008/06/04(Wed) 11:57:55)
ファイルを1つ(読み取りに対して)ロックしたら当該ファイル1つが読み取れないだけ に対して
ディレクトリを(読み取りに対して)ロックしたら、
そのディレクトリ以下に存在するすべてのファイル+ディレクトリがアクセスできなくなる
んではないかなーと。

かぶっているっぽいので追加

書き込みロックなら出来ても良かったのかも新米、には有る意味で御意なんだけど

unix に話を限定
unix のファイルシステムだと誰かが読み取りオープン済みファイルを他人が unlink することができる。
このときディレクトリエントリ上では削除されるけど inode は使用済みのままになっているわけで
自分が今使っているファイルを他人に削除されても、とりあえず両者とも困んない。
# 自分が close(2) した時点で inode の被参照回数=0になるので inode が解放される
# すなわちファイル実体が削除されファイル実体が使っていたディスク空間も未使用に戻る

(NFS 上でも)同一ディレクトリに対して2つ以上のプロセス(同一マシン上または異なるクライアント上の)が
同時に同一ファイル名で creat(2) しようとすると、 atomic 性が保証されているので、
どっちか片方だけが成功してもう片方は失敗することになっている

という仕様2つがあるので、俺的にはディレクトリ自体をロックできる必然ってのが感じ取れないんだけど。
# っていうか「unix はディレクトリのロックをしたくないのでこういう仕様2つを盛り込んだ」というべきか?
このへん Windows でもあまり状況は違わないはず (俺は unix+組み込み屋なので Windows のこの辺の詳細は良く知らない)

逆にれいさん的には「設計思想として(特にリモートの)ディレクトリがロックできる必然」をどの辺に感じます?
ディレクトリがロックできたらどの辺がおいしいと思います?
返信 編集キー/


管理者用

- Child Tree -