BYTE flag=0;//线程1和线程2共享线程1:while (!flag);//检测数据接收标志。
MessageBox ("收到数据!");
flag=0;线程2:if (串口接收到数据)flag=1;但是在线程1中while (!flag);做成死循环,而事实上在线程2中确实已经接收到了数据,且执行了
flag=1;
语句。如何解决这个问题??

解决方案 »

  1.   

    怎么能这样做呢?
    flag是一个2个线程的共享量
    用互斥信号量来操作它!
      

  2.   

    BYTE flag=0
    访问和改变这个变量要同步。
      

  3.   

    谢谢大家。敢问wwwllg(wwwllg) 大侠:
    访问和改变这个变量要同步,如何个同步法呢?
      

  4.   

    CCriticalSection::Lock
    BOOL Lock( );BOOL Lock( DWORD dwTimeout );Return ValueNonzero if the function was successful; otherwise 0.ParametersdwTimeoutLock ignores this parameter value.ResCall this member function to gain access to the critical section object. Lock is a blocking call that will not return until the critical section object is signaled (becomes available).If timed waits are necessary, you can use a CMutex object instead of a CCriticalSection object.