">
第一次嘗試
最早get到狀態機大約是在《軟件設計師教程》,后來沒有后來啦!現在,我要寫一個帶優先級處理的數據發送隊列,記不清怎么產生的想法,打算嘗試用狀態機,只是打算嘗試,不確定能不能狀態機模式 c語言,隨,展開下列學習。
啥是狀態機
不基于問題的碎片化學習被認為是浪費時間,先帶一個比較俗的問題: 什么是狀態機思想,其基于或適用于什么應用場景?
從這篇文章中簡單get到了狀態機理論的起源,了解到狀態機思想在數字電路設計、編譯原理中的形成與應用,然后過渡到了軟件設計領域中的狀態機思想。還有個有限狀態機的實現例子,表示木看懂!
這篇文章是博客專家的作品,其簡單描述了狀態機與條件語句的區別狀態機模式 c語言,并給出來一個完整的狀態機模型實例-基于PC軟件安裝并運行這么一個場景。
小總結:
“狀態機”是一種表達狀態轉換變換邏輯的方法。其實/也是一種狀態機實現的方式。其設計目的是,狀態裝換邏輯分散?當狀態較多、或者狀態遷移邏輯復雜時,如果使用普通邏輯分支語句,則便利將會癌擴散到實現類的全身。
狀態設計模式
在GOF設計模式中有一個對象行為設計模式叫做STATE(狀態),其意圖為:允許一個對象在其內部狀態發生改變時改變它的行為。其通常適用于,狀態較多,行為有限的情況,以下兩種情況均可使用state模式:
1、一個對象的行為行為取決于狀態,并且它必須在運行時刻更具狀態改變它的行為。
2、一個操作中含有龐大的多分枝的條件語句,切這些分枝依賴于對象的狀態。
通過該模式的結構圖(P202)可以得出一個隱性的強調:各狀態類的行為接口是統一的,只是具體的行為實現不一致。
啥區別-強迫癥
還沒有對狀態機理解透徹,不好總結!
如下是自己當前的理解:
首先狀態機的的輸入叫做事件,其響應叫動作。
無論是狀態機還是狀態設計模式,我們都工作在固定有限個確定狀態下。
狀態設計模式與狀態機本質應該是一樣的,不過狀態設計模式中并沒有涉及子狀態的相關概念,另外狀態設計模式,對狀態切換這塊做了抽象封裝定義。
線程的狀態及切換
進入到這么一個主題有兩個原因,1是曾經見到過線程狀態切換圖 2是在查詢狀態機資料時發現了幾篇關于用狀態機實現多線程思路的 文章,當然這兩點可能沒關系。
JAVA線程的5中狀態及切換,雖然不是C++的,但是講解的很透徹。為我的嘗試設計也提供了一定的靈感:新建、運行、可運行、阻塞、死亡,以及三種阻塞情況。