Re: SMP / Multi Thread
河野真治 @ 琉球大学情報工学です。
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(機能と構成)
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735