2 weifengzc weifengzc 于 2015.07.15 11:15 提问

mfc 两个定时器 访问同一个线程,数据重叠问题

我设置了两个定时器(一个15s定时,一个35s定时)都向同一个线程(该线程根据发送指令,接收数据)发送相似的指令,但是数据在两个定时器同时到达时会出现数据重叠问题(即定时器1接收的数据可能包含定时器2的数据)。
求大神,帮忙解决下

3个回答

caozhy
caozhy   Ds   Rxr 2015.07.15 11:11

那么你需要在协议的层面加以区分。你说的指令相似,但是总有区别吧。如果没有办法区别,那是协议设计的失败。

weifengzc
weifengzc 一个指令发送的是多个命令,另一个发送的是多个命令中的一个,这个没办法区别
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.07.15 11:18

你可以在数据中加一个标志位,表明是那个定时器发送的,如果数据重叠,那么就要考虑接收的数据边界。

zuishikonghuan
zuishikonghuan   2015.07.15 22:24

指令报文里面应该添加一个字段标识是由那个定时器发出的。另外如果线程处于接收数据的状态,那么按理说线程的执行现场应该在接收数据那儿,这时候指令应该是接收不到的,必须等数据接收完了才应该回去处理接收指令的任务的

Csdn user default icon
上传中...
上传图片
插入图片