多线程问题!!同时监听socket和串口

我要写一个软件,其中需要同时监听socket和串口。socket监听的内容为采集的数据信息,串口监听得到的消息用来控制socket停止接收数据。现在使用了Windows的定时器settimer间隔一定时间接收一次socket的数据;开辟了一个新的线程用于等待串口的消息,使用waitforsingleobject无限期地等待串口发来命令。但是现在的问题就是如果一直监听串口就无法接受socket发来的数据;如果不实时监听串口而是间隔一段时间再监听,那么有可能外部命令发来时没有被串口监听到,从而无法停止socket接受数据。

2个回答

用俩线程,一个监听串口消息,一个监听socket,如果监听串口消息的线程收到了消息就通知监听socket的线程休眠 ,

willzoe
willzoe Windows下两个线程可以同时进行吗?
4 年多之前 回复

你知道多线程是用来干嘛的吗??????????????????????

willzoe
willzoe 在串口线程的过程函数中写吗?
4 年多之前 回复
q3733353520
我用双手-成就你的梦想 回复linux_liyi: else里面建议usleep一下
4 年多之前 回复
q3733353520
我用双手-成就你的梦想 回复willzoe: 当然,你要用while(1){ if(getdata()){xx;}else{} } 懂么。
4 年多之前 回复
willzoe
willzoe 两个线程是在不同时间片内进行的,每个线程的时间片结束之后就会切换到其他线程。如果串口监听线程使用waitforsingleobject一直等待串口命令,当前时间片结束之后,就会切换到其他线程,从其他线程切换回来以后并没有继续执行waitforsingleobject,而是执行了下一句。
4 年多之前 回复
q3733353520
我用双手-成就你的梦想 回复linux_liyi: 另一个线程
4 年多之前 回复
q3733353520
我用双手-成就你的梦想 回复willzoe: 所以当你是一个线程在一直接收串口命令时,为什么会影响到socket的接收呢?
4 年多之前 回复
willzoe
willzoe 我是初学者,想实现在一个程序中两个功能同时进行。。。。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问