通信应答过久导致的程序卡死问题
问题如题,采用串口通信。整个通信分成两层:收发层、协议层。
收发层的接收部分是采用接收线程和环形缓冲器来实现,协议层根据协议不同实现方式不同。但是在实现这样一个协议时出现问题了:当协议命令下发时,对方是根据命令实现一个行为,但是该行为没有时间限制,而协议程序得等待对方行为的结果,这样就照成协议程序卡死在那。
目前想到的两个解决方法:
1.再建一个协议等待应答的线程,但是这样通信方就由两个线程来维护,感觉太浪费了。
2.在收发层的接收线程去掉环形缓冲器,直接做一个接口,用于处理协议分析,但是这样收发层和协议层的层次就交叠了。
各位大侠有没有好的解决方法?
[解决办法]
可以定义一个异步通信机制,在收发层接收到数据后,通知协议层去读取数据即可
不需要单独再建立线程
不过建立一个线程也没有啥浪费的啊,只是多占用一点内存而已