我设置了两个定时器(一个15s定时,一个35s定时)都向同一个线程(该线程根据发送指令,接收数据)发送相似的指令,但是数据在两个定时器同时到达时会出现数据重叠问题(即定时器1接收的数据可能包含定时器2的数据)。
求大神,帮忙解决下
那么你需要在协议的层面加以区分。你说的指令相似,但是总有区别吧。如果没有办法区别,那是协议设计的失败。
你可以在数据中加一个标志位,表明是那个定时器发送的,如果数据重叠,那么就要考虑接收的数据边界。
指令报文里面应该添加一个字段标识是由那个定时器发出的。另外如果线程处于接收数据的状态,那么按理说线程的执行现场应该在接收数据那儿,这时候指令应该是接收不到的,必须等数据接收完了才应该回去处理接收指令的任务的