当前位置: 代码迷 >> VC >> 线程同步有关问题,很头大,求
  详细解决方案

线程同步有关问题,很头大,求

热度:2414   发布时间:2013-02-25 00:00:00.0
线程同步问题,很头大,求高手指点
问题是这样的,在while(1)循环里不断从串口接收数据,如果有数据了有一个函数就要把数据取出来,我要用什么方法进行线程同步,让外面这个函数知道,while循环里已经取到数据了,然后把他取出来。这样一个问题用那种同步方法比较合适,望高手指点一二
------解决方案--------------------------------------------------------
接到数据后放到内存列表中,后台开一个线程,循环从列表中拿数据处理
------解决方案--------------------------------------------------------
这个数据只出现一次,如果用你的这个方法,会不会还没来得及拿数据,就已经被新来的数据给覆盖了
------解决方案--------------------------------------------------------
msdn search mutex event semaphore waitable timer
------解决方案--------------------------------------------------------
mutex 和 condition variable
------解决方案--------------------------------------------------------
在有数据的线程中向外发送一个事件(消息),在事件(消息)处理函数中包含你的那个函数即可。事件(消息)带的参数就是数据。
------解决方案--------------------------------------------------------
While里面暂停接收,然后调用事件,把已有数据处理完了,再继续接收
------解决方案--------------------------------------------------------
C++可以用临界区、互斥和事件通知还实现线程同步,有窗体的可以用消息
------解决方案--------------------------------------------------------
用临界区、互斥和事件通知实现线程同步
我就是用的临界区,把接收到的数据存入队列,用的时候再出队操作就行了
------解决方案--------------------------------------------------------
通知读取函数用消息:
对数据同步用EVENT 事件
------解决方案--------------------------------------------------------
发送消息吧,把要用的数据作为其中一个参数发送出来~
------解决方案--------------------------------------------------------
使用事件内核对象或者IO完成端口同步机制。事件对象相对于IO完成端口机制比较简单些,而IO完成端口机制性能更好,伸缩性也更强。如果对性能要求不是很高的话,请使用事件内核对象同步机制。
  相关解决方案