科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道为Linux应用构造有限状态机方法(5)

为Linux应用构造有限状态机方法(5)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

有限自动机(Finite Automata Machine)是计算机科学的重要基石,它在软件开发领域内通常被称作有限状态机(Finite State Machine),是一种应用非常广泛的软件设计模式(Design Pattern)。

作者:shenhuo 来源:赛迪网 2007年9月13日

关键字: 有限状态机 操作系统 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

有限状态机是由事件来进行驱动的,在FSME生成的状态机框架代码中,方法A()可以被用来向状态机发送相应的事件,从而提供状态机正常运转所需要的"动力"。状态机负责在其内部维护一个事件队列,所有到达的事件都会先被放到事件队列中进行等候,从而能够保证它们将按照到达的先后顺序被依次处理。在处理每一个到达的事件时,状态机都会根据自己当前所处的状态,检查与该状态对应的转换条件是否已经被满足,如果满足的话则激活相应的状态转换过程。

使用下面的命令能够将生成的状态机框架和测试代码编译成一个可执行文件:

  [xiaowp@linuxgam code]$ g++ DoorFSM.cpp TestFSM.cpp -o fsm
  

由于之前在用fsmc命令生成状态机代码时使用了-d选项,生成的状态机框架中会包含一定的调试信息,包括状态机中每次状态转换时的激活事件、转换前的状态、所经历的转换、转换后的状态等,如下所示:

  
  [xiaowp@linuxgam code]$ ./fsm
  DoorFSM:event:'Close'
  DoorFSM:state:'Opened'
  DoorFSM:transition:'closeDoor'
  DoorFSM:new state:'Closed'
  DoorFSM:event:'Lock'
  DoorFSM:state:'Closed'
  DoorFSM:transition:'lockDoor'
  DoorFSM:new state:'Locked'
  DoorFSM:event:'Unlock'
  DoorFSM:state:'Locked'
  DoorFSM:transition:'unlockDoor'
  DoorFSM:new state:'Unlocked'
  DoorFSM:event:'Open'
  DoorFSM:state:'Unlocked'
  DoorFSM:transition:'openDoor'
  DoorFSM:new state:'Opened'
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章