Dead Lock
Menuさまざまな言語で書いたロックをテストするプログラムがある。
CまたはPerl
- flock_test.c 学籍番号が偶数の場合
- flock_test.pl
これらを用いて、この授業のデッドロックを2相ロックで再現してみよ。また、2相ロックでない場合に矛盾が生じる例を示せ。
(注) sleep などを使わないとうまくdead lock しないことがある。二人でおなじようにアクセスするのではdead lockしない。
Java
Java のsyncrhonized method を用いて、2相ロックでのthread の dead lockが起きる可能性があるテストプログラムを書け。(1) 複数の共有オブジェクトを持つ Thread 作り dead lock が起きることを示す。sleep() を使って調整して dead lock させる。
(2)sleep() を使わずに、dead lock が起きる場合があることを、Java PathFinderを用いて示せ。
(3)正しいプログラムがdead lockしないことをJava PathFinderを用いて確認せよ。