线程本来是用来解决耗时操作问题,但是在使用过程中发现会出现被干扰,不稳定的情况。
具体是这样子的,程序需要不停发送数据,测试稳定性的时候就加了个while(1)循环,让此线程一直运行,循环一次3个状态,不同状态来控制数据的发送,一次发送500个字节左右,1s循环5-8次(状态由外部设备来信号控制),此部分代码框架如下
while(1)
{
while(s_count < weft)
{
//循环一次3个状态,每个状态维持时间较短,根据不同状态来控制数据的发送,一次发送500个字节左右,1s循环5-8次
}
}
但是测试时发现偶尔会出现不正常情况(某个状态被跳过,导致此次数据没有发送),出错时间毫无规律,有时半小时都没问题,有时1分钟出现2次,而且之前把这段代码单独放到一个函数里调用运行时,测试过3个小时,一次都没错过,所以循环里逻辑应该是没问题,但是这样子主线程基本卡死做不了其他事情了,之后放到线程里就出现这种问题了,所以初步怀疑是线程间出现问题了,可能是执行循环过程中cpu做其他事情去了,导致某个状态被跳过(实际上出现问题后我把其他线程都关了,所以主程序也基本没什么操作)?由于对线程不是很精通,所以特来求问,请问有可能出现这种情况么,还是其他什么原因,怎么解决?