「Dining Philosopher」Simulate Macro

  1. 初めに
  2.  このマクロは平行処理に於けるリソース競合の問題として有名な Dijkstra の「食事をする哲学者」問題 (Dining Philosopher) のシミュレートをするマクロです。

  3. 使用法
    1. インストール
    2.  このマクロはインストーラに対応していないので、 アーカイブを解凍し、ソースファイルを WZ の macro ディレクトリにコピーしてください。

    3. 実行方法
    4. [ツール]-[コマンドを指定して実行] 「DinPhil」 と入力して実行してください。

    5. 動作
    6.  マクロを実行すると、ウィンドウが 5つ放射状に開き、そして中央にダイアログが開きます。
       5つのウィンドウはそれぞれ哲学者にあたります。 問題を簡略化してますので各哲学者は繰り返し次の動作を順番にして行きます。

      1. 考える
      2. 椅子に着く
      3. 左のフォークを取る
      4. 右のフォークを取る
      5. スパゲッティを食べる
      6. 左のフォークを離す
      7. 右のフォークを離す
      運がよければ (悪ければ?) デッドロックはなかなか発生しません。(^^;

    7. 終了方法
    8.  中央のダイアログのボタンを押すと全体の動作が停止します。 ただし、動作がていししてもウィンドウは閉じられませんので一つづつ閉じてください。 (NaruTo のウィンドウ選択切替」があれば便利?)

  4. 実現に関して
  5.  このマクロはサーバーモジュールと各哲学者のそれぞれが独立したプロセスとなっています。
     フォークは Windows の Mutex(相互排他オブジェクト)で表現しています。
     また、「終了しますか」ボタンを押した場合、サーバーモジュールから各哲学者モジュールへ Event が発せられます。



DOWNLOAD

「Dining Philosopher」
DinPhilver0.12

【対応バージョン】
WZ32 ver2.0,ver3.0
【アーカイブ内容】
マクロ、ドキュメント、サンプルマクロ
【変更内容】
【作成日】
平成8年5月30日
【サイズ】
3,052 byte
ここからDOWNLOAD