【講古堂】狀態機(二)

狀態機併發

狀態機的概念是來自硬件的。描述一系列狀態轉換的電路叫狀態機。主要用來實現一個數字系統設計中的控制部分。運行模式相似於CPU,但和CPU相比,具備結構簡單、易讀易懂等特色。設計

對於無限個狀態(無限狀態機,Infinite State Machine,ISM)是難以檢證的,因此這裏所說的狀態機一般是指有限狀態機或有窮狀態機,即Finite State Machine,FSM。對象

狀態模式能夠容許客戶端改變狀態的轉換行爲,而狀態機則是可以自動改變狀態,狀態機是一個比較獨立的並且複雜的機制。事件

狀態機看上去就像是一個有向圖,其中狀態是圖的節點,而狀態轉換則是圖的邊。get

此外這些狀態中還必須有一個初始狀態和至少一個接受狀態。it

可是因爲一些緣由並不會執行初始化(initialization),而是直接經過一個節點進入狀態是容許的,則此節點稱之爲進入節點(Entry Point)。io

進入終了狀態的節點稱爲退出節點(Exit Point)硬件

 

轉移(Transitions)是兩個狀態之間的一種關係,表示對象將在源狀態(Source State)中,由於預先定義的觸發器的發生致使警界條件知足時進入目標狀態(Target State)。客戶端

觸發器(Trigger):是轉移的誘因,能夠是一個信號,事件、條件變化(a change in some condition)和時間表達式。系統設計

警界條件(Guard Condition):當警界條件知足時,事件纔會引起轉移(Transition)。

結果(Effect):對象狀態轉移後的結果。

狀態能夠有返回自身狀態的轉移,稱之爲自身轉移(Self-Transitions)。

 

動做(Actions)是一個可執行的原子操做,也就是說動做是不可中斷的,其執行時間是可忽略不計的。

 

源狀態 Source State :即受轉換影響的狀態

目標狀態 Target State :當轉換完成後,對象的狀態

觸發事件 (Trigger) Event :用來爲轉換定義一個事件,包括調用、改變、信號、時間四類事件

監護條件 (Guard Condition) :布爾表達式,決定是否激活轉換、

動做 (Action) :轉換激活時的操做

 

對象狀態轉移後的結果顯示在轉移線上,若是目標狀態有許多轉移,並且每一個轉移有相同的結果,這時把轉移後的結果(Effect)展現在目標狀態中(Target State)更好一些,能夠定義進入動做(Entry Action )和退出動做(Exit Action)

嵌套在另一個狀態中的狀態稱之爲子狀態(sub-state),一個含有子狀態的狀態被稱做組合狀態(Compound States)。

歷史狀態(History States)是一個僞狀態(Pseudostate),其目的是記住從組合狀態中退出時所處的子狀態,當再次進入組合狀態,可直接進入這個子狀態,而不是再次從組合狀態的初態開始。

併發區域(Concurrent Regions)

狀態圖能夠分爲區域,而區域又包括退出或者當前執行的子狀態。說明組合狀態在某一時刻能夠同時達到多個子狀態。

 

狀態,存儲了關於過去的信息,就是說:它反映從系統開始到如今時刻的輸入變化。

轉移指示狀態變動,而且用必須知足確使轉移發生的條件來描述它。

動做是在給定時刻要進行的活動的描述。有多種類型的動做:

進入動做(entry action):在進入狀態時進行

退出動做:在退出狀態時進行

輸入動做:依賴於當前狀態和輸入條件進行

轉移動做:在進行特定轉移時進行

相關文章
相關標籤/搜索