在编程中,往往会有多个全局对象来访问同一块资源。对于串口通信通信来讲,数据的读写操作会使用
同一个缓冲区(内存区域),沃尔读写操作由通常是由多个线程来完成。因此要实现缓冲区数据访问的安
全性和稳定性,就需要一种同步机制来实现。通常实现线程同步的方法如下:
信号灯对象CSemaphore,互斥对象CMutex,事件对象CEvent,以及临界区对象CCritialSection。本文
中写操作的优先级高于读操作,采用互斥对象完成线程的同步。步骤如下:
1. 定义全局变量hMurtex,CreateMutex创建互斥对象
2. 在每个需要同步的线程添加代码:
WaitForSingleObject(hMutex,INFINITE); 线程挂起,监听互斥对象事件。当hMutex处于有信号状态时,该线程获得该互斥对象句柄权限,对资源进行操作
...............事件处理..
.........................................
Sleep(500); 线程挂起500ms 是其它线程有机会取抢占CPU资源
ReleaseMutex(hMutex); 释放互斥对象