UMLステートマシンのステート間の移行時に、トリガー、ガード、およびエフェクトを設定できます。ステートマシンのブロッキングシステムコールとコールイベント
Posixシステムではselect()やRaspberry Piでwait_for_edge()などのシステムコールをブロックするとステートマシンがブロックされ、この操作を続行できないためコールイベントですか?
この状態マシンをこのようにモデル化することはできますか、別のメカニズムを使用する必要がありますか?
ありがとうございます。
UMLステートマシンのステート間の移行時に、トリガー、ガード、およびエフェクトを設定できます。ステートマシンのブロッキングシステムコールとコールイベント
Posixシステムではselect()やRaspberry Piでwait_for_edge()などのシステムコールをブロックするとステートマシンがブロックされ、この操作を続行できないためコールイベントですか?
この状態マシンをこのようにモデル化することはできますか、別のメカニズムを使用する必要がありますか?
ありがとうございます。
ブロッキング呼び出しは、ステートマシン内部イベント処理の普遍想定ランツー完了セマンティクスに違反します。これは、ブロッキング呼び出しからの復帰を解除することがステートマシンにイベントを配信する別の方法であるためです。問題は、この「バックドア」イベントが到着し、ステートマシンが元のイベントを処理中であることです。また、ステートマシンのダイアグラムにそのような「非ブロッキング」イベントを表示する明確な方法はありません。これらの理由から、インライン・ディレイ()でさえも、ブロッキング・コールは、ステート・マシン内で、または実際にはイベント駆動型システム内では避けるべきです。イベントは、厳密にイベントループを介して配信する必要があります。このようなイベントループは、イベントを待つのをブロックすることができますが、これはの外にあるの状態マシンです。