2017-11-25 13 views
0

UMLステートマシンのステート間の移行時に、トリガー、ガード、およびエフェクトを設定できます。ステートマシンのブロッキングシステムコールとコールイベント

Posixシステムではselect()やRaspberry Piでwait_for_edge()などのシステムコールをブロックするとステートマシンがブロックされ、この操作を続行できないためコールイベントですか?

この状態マシンをこのようにモデル化することはできますか、別のメカニズムを使用する必要がありますか?

ありがとうございます。

答えて

0

ブロッキングコールがある場合、その状態はそのまま残ります。状態の内部に<<do>>のような呼び出しが表示されます。ステートマシン内部

enter image description here

0

ブロッキング呼び出しは、ステートマシン内部イベント処理の普遍想定ランツー完了セマンティクスに違反します。これは、ブロッキング呼び出しからの復帰を解除することがステートマシンにイベントを配信する別の方法であるためです。問題は、この「バックドア」イベントが到着し、ステートマシンが元のイベントを処理中であることです。また、ステートマシンのダイアグラムにそのような「非ブロッキング」イベントを表示する明確な方法はありません。これらの理由から、インライン・ディレイ()でさえも、ブロッキング・コールは、ステート・マシン内で、または実際にはイベント駆動型システム内では避けるべきです。イベントは、厳密にイベントループを介して配信する必要があります。このようなイベントループは、イベントを待つのをブロックすることができますが、これはの外にあるの状態マシンです。

関連する問題