当前位置: 技术问答>linux和unix
通信应答过久导致的程序卡死问题
来源: 互联网 发布时间:2017-02-10
本文导语: 问题如题,采用串口通信。整个通信分成两层:收发层、协议层。 收发层的接收部分是采用接收线程和环形缓冲器来实现,协议层根据协议不同实现方式不同。但是在实现这样一个协议时出现问题了:当...
问题如题,采用串口通信。整个通信分成两层:收发层、协议层。
收发层的接收部分是采用接收线程和环形缓冲器来实现,协议层根据协议不同实现方式不同。但是在实现这样一个协议时出现问题了:当协议命令下发时,对方是根据命令实现一个行为,但是该行为没有时间限制,而协议程序得等待对方行为的结果,这样就照成协议程序卡死在那。
目前想到的一个解决方法:另外再建一个协议等待应答的线程,但是这样通信方就由两个线程来维护,感觉太浪费了。
各位大侠有没有好的解决方法?
收发层的接收部分是采用接收线程和环形缓冲器来实现,协议层根据协议不同实现方式不同。但是在实现这样一个协议时出现问题了:当协议命令下发时,对方是根据命令实现一个行为,但是该行为没有时间限制,而协议程序得等待对方行为的结果,这样就照成协议程序卡死在那。
目前想到的一个解决方法:另外再建一个协议等待应答的线程,但是这样通信方就由两个线程来维护,感觉太浪费了。
各位大侠有没有好的解决方法?
|
如果协议层在kernel级别完成的,那么异步反馈可以借助信号来实现。
如果是用户态的,我也没想到什么办法。
另外,”定时查询“适不适用你的情况?
如果是用户态的,我也没想到什么办法。
另外,”定时查询“适不适用你的情况?