我目前正在研究分層狀態機(UML狀態機,狀態圖等),下面是我不清楚:狀態機推活動,自己的事件隊列
正在推動事件機器本身的事件隊列在轉換過程中以及從有效的狀態出發,如果是,它是否在實踐中安全使用或應該避免?在做這件事情時是否存在某些暗示(至少存在實施怪癖,正交區域發揮作用時的問題等)?
我將舉例說明有兩個虛擬機的問題:
以下機牀將是狀態
A
等待事件A_to_B
後,它會通過分派事件轉換動作進入無限循環:+-----+ +-----+ +-----+ | A | A_to_B/ | B | B_to_C/ | C | |-----| dispatch B_to_C |-----| dispatch C_to_A |-----| O---->| +------------------->| +------------------->| | | | | | | | +-----+ +-----+ +-----+ ^ C_to_A/ | | dispatch A_to_B | +-----------------------------------------------------+
以下機器會立即陷入無限循環通過調度事件進入動作:
+-------------------+ +-------------------+ +-----+ | A | | B | | C | |-------------------| A_to_B |-------------------| B_to_C |-----| O---->| on entry: +---------->| on entry: +---------->| | | dispatch A_to_B | | dispatch B_to_C | | | | | | dispatch C_to_A | | | +-------------------+ +-------------------+ +-----+ ^ | | C_to_A | +---------------------------------------------------------------+
我不知道問心無愧是怎麼回事。但是,如果您正在排隊處理事件,那麼最好將進程分隔到不同的處理器/內核中。然後您可以控制每個的優先級。共享內存也可能有用。 –
+用於ASCII繪圖來解釋問題,你如何繪製? –
我使用http://www.asciiflow.com/來繪製這些 – bgr