假設我有2個狀態,一個活動狀態和一個空閒狀態。如果我收到一些活動狀態的事件,我想推遲它們並在我回到空閒狀態時執行它們。boost msm - 增強msm多個延期事件
但是當我回到空閒狀態時有沒有辦法選擇哪個以前的延遲事件來處理?還是有辦法優先考慮他們,甚至忽略他們中的少數?
謝謝,
假設我有2個狀態,一個活動狀態和一個空閒狀態。如果我收到一些活動狀態的事件,我想推遲它們並在我回到空閒狀態時執行它們。boost msm - 增強msm多個延期事件
但是當我回到空閒狀態時有沒有辦法選擇哪個以前的延遲事件來處理?還是有辦法優先考慮他們,甚至忽略他們中的少數?
謝謝,
我看到延期事件的基本功能在項目中提供的文檔中有介紹,我發現這些文檔通常都很有幫助。在標題爲Orthogonal regions, terminate state, event deferring的章節中,查找文本「UML將事件延遲定義爲狀態屬性。爲了適應這種情況,MSM允許您通過提供deferred_events類型來指定此狀態......」請注意,此處描述了兩種不同的方法來實現延期事件。
沒有測試一個例子,我不能說關於衝突轉換和警衛的參考資料是否允許你確定你在延期事件上尋找的優先級。你可以發佈你的問題或簡單的例子。
我不知道本機提升MSM的解決方案。我聽說作者Christophe Henry對郵件列表上的這類問題反應良好。
如果你的情況真的很瑣碎(只有兩個狀態),沒有什麼能阻止你實現你自己的延遲事件隊列,在Active中傳遞「defferred events」給它。您可以通過將它們推入自定義隊列的操作爲每個事件類型實施內部轉換。進入空閒狀態後,您可以對其進行重新排序,然後將它們全部發回SM。儘管這個解決方案並不能很好地擴展,但它的一些缺陷。