第5章 練習問題 1-2(a)
1つのスレッドを共有する複数のポートオブジェクト
インタリーブはロックステップで行なわれる。
まず、初期状態でポート内に2つのメッセージが格納される。
ping(0)|pong(1000)|_
そして、Msgループで最初のメッセージ(ping(0))が処理される。ただし、この処理の内部で{Call pongobj pong(1)}が発生する。
pong(1000)|pong(1)|_
次にpong(1000)が処理される。ただし、この処理の内部で{Call pingobj ping(1001)}が発生する。
pong(1)|ping(1001)|_
以下ry。
リフト制御システム
(a)
よい考えではない。
- 制御システムは状態として現在の階(F)と通信しているリフトのID(Lid)を持つ。そのため制御装置は複数の階や複数のリフトを管理することができない
- 階の移動にTimerオブジェクトを用いている。そしてstoptimerメッセージは付加情報を持たないため、どのリフトを動かすべきか判断できない
制御システム全体の振る舞いは以下のように変わる
- 最後に押したボタンのみが有効になる
- ただしそれ以前に押されたボタンの回数によって、リフトの移動速度が変化する