日期:2014-05-16  浏览次数:20670 次

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

------解决方案--------------------
如果协议层在kernel级别完成的,那么异步反馈可以借助信号来实现。
如果是用户态的,我也没想到什么办法。

另外,”定时查询“适不适用你的情况?