科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

为实用的软件系统编写状态机并不是一件十分轻松的事情,特别是当状态机本身比较复杂的时候尤其如此,许多有过类似经历的程序员往往将其形容为"毫无创意"的过程,因为他们需要将大量的时间与精力倾注在如何管理好状态机中的各种状态上,而不是程序本身的运行逻辑。

作者:shenhuo 来源:赛迪网技术社区 2007年10月20日

关键字: 操作系统 方法 状态机 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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

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