河野真治 @ 琉球大学情報工学です。

In article <YAS.03Aug5050543@kirk.is.tsukuba.ac.jp>, yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes
> 次のような場合、どうすればデッドロックをさけられるでしょうか。
> Task1: /usr/local/share/emacs/etc と検索する。
> Task2: cwd が /usr/local/share/emacs/etc で、..
>        /../../../.. と検索していく。

 .. をlockする時にも、root からlockするんですね。root から
lock すれば、それで順序が付くから。ディレクトリ内のエントリ
にも順序がないとまずいけど。でも、それはlockかけすぎ。普通は
検索はlockしないで、変更するディレクトリだけにlock すると思
う。Atomic lock にするわけですね。

> 最初からロックすべきものが全部わかっていたに、資源の番地でソー
> トする、という方法を使ったことがあります。番号は、資源の方に
> つけないと。CPU、あるいは、スレッドの番号というのは、だめてす。

結果的に資源に番号がついたのと同じであれば、どっちでもだいじ
ょうぶです。

複数の資源を待たないとデッドロックしないから、システムコール
の場合は単一のlockですませるだけでも良いみたいですね。で、複
数のlockを必要とする場合は、配列に入れて配列の先頭からlockし
ていくっていう実装だったと思う。

---
Shinji KONO @ Information Engineering, University of the Ryukyus, 
              PRESTO, Japan Science and Technology Corporation
河野真治 @ 琉球大学工学部情報工学科, 
           科学技術振興事業団さきがけ研究21(機能と構成)