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

わんくま同盟

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

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


(過去ログ 40 を表示中)
■20009 / )  Re[2]: ディレクトリの排他アクセス
□投稿者/ れい (590回)-(2008/06/04(Wed) 11:12:12)
No20004 (774RR さん) に返信
> opendir/closedir はそもそも unix で使われていた。
> だがファイルの列挙には readdir を繰り返し呼ぶことが必要であり
> opendir しただけでディレクトリにロックがかかるわけではない
> (したがって列挙中にファイルが増減したら・・・問題は存在する)

unixやposixにはadvisory lockしかなく、
CP/Mの時点でmandatory lockになったのだと思いますが、
だとするとdirectoryに対してmandatory lockを導入しなかった理由がわかりません。
fileに対してはmandatory lockを導入したのに。

> CP/M ではファイルの列挙に FindFirst/Next が使われていた
> MS-DOS のファイルシステムは CP/M+unix のあいのこなので
> ・ディレクトリという概念は存在するけど
> ・その中のファイルの列挙は FindFirst/Next で実装されていた
> Win3.1 は MS-DOS [snip] Win32 は Win3.1 [snip] っつーことであろうかと。

では、CP/MでFindXXXFileを採用した理由は何でしょう?
CP/Mはきちんと触ったことがないのですが…
手元の資料を眺めたかぎりではNTとたいして変わりません。

当時すでにUNIXはあったはずで、
特に思想的理由が無ければ、現行の製品を真似るのが妥当です。
しかし真似なかったということは、そこに意思があったと思うのです。

政治的な理由であえて同じにしなかったとか、
何も参考にせずに作った偶然の産物とかでしょうか?

> NFS のかなたにあるサーバー上のディレクトリをロックできてしまうと、
> ロックした特定一人には都合が良くても他のすべてのユーザに不都合が出るわけで、
> その辺を嫌ったのではないかな。
> そもそもファイルの生成・削除はアトミック操作ということになっているし。
> 1つのファイルの内容をロックしても他の人はそんなに困らないわけで。

ディレクトリロックもファイルロックも、
他人が困るという点では同じに思えますが…。
そうでもないのかしら。

No20005 (NyaRuRu さん) に返信
> ■No19998 (れい さん) に返信
>>FindFirstなどで調べるときも、
>>同時アクセスがあるとどんなエントリが返ってくるのか分かりません。
>
> FindFirstFileTransacted で何とかなりませんか?

TxFですね。情報どうもです。
ですが、「何とかしたい」というわけではないのです。
純粋に理由を、設計思想を知りたいのです。

返信 編集キー/


管理者用

- Child Tree -