首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

通信应答过久导致的程序卡死有关问题

2012-04-22 
通信应答过久导致的程序卡死问题问题如题,采用串口通信。整个通信分成两层:收发层、协议层。收发层的接收部分

通信应答过久导致的程序卡死问题
问题如题,采用串口通信。整个通信分成两层:收发层、协议层。
  收发层的接收部分是采用接收线程和环形缓冲器来实现,协议层根据协议不同实现方式不同。但是在实现这样一个协议时出现问题了:当协议命令下发时,对方是根据命令实现一个行为,但是该行为没有时间限制,而协议程序得等待对方行为的结果,这样就照成协议程序卡死在那。
  目前想到的两个解决方法:
  1.再建一个协议等待应答的线程,但是这样通信方就由两个线程来维护,感觉太浪费了。
  2.在收发层的接收线程去掉环形缓冲器,直接做一个接口,用于处理协议分析,但是这样收发层和协议层的层次就交叠了。  
  
  各位大侠有没有好的解决方法?

[解决办法]
可以定义一个异步通信机制,在收发层接收到数据后,通知协议层去读取数据即可
不需要单独再建立线程
不过建立一个线程也没有啥浪费的啊,只是多占用一点内存而已

热点排行