BYTE flag=0;//线程1和线程2共享线程1:while (!flag);//检测数据接收标志。
MessageBox ("收到数据!");
flag=0;线程2:if (串口接收到数据)flag=1;但是在线程1中while (!flag);做成死循环,而事实上在线程2中确实已经接收到了数据,且执行了
flag=1;
语句。如何解决这个问题??
MessageBox ("收到数据!");
flag=0;线程2:if (串口接收到数据)flag=1;但是在线程1中while (!flag);做成死循环,而事实上在线程2中确实已经接收到了数据,且执行了
flag=1;
语句。如何解决这个问题??
flag是一个2个线程的共享量
用互斥信号量来操作它!
访问和改变这个变量要同步。
访问和改变这个变量要同步,如何个同步法呢?
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.