串口通信的线程同步问题

    在编程中,往往会有多个全局对象来访问同一块资源。对于串口通信通信来讲,数据的读写操作会使用

同一个缓冲区(内存区域),沃尔读写操作由通常是由多个线程来完成。因此要实现缓冲区数据访问的安

全性和稳定性,就需要一种同步机制来实现。通常实现线程同步的方法如下:

    信号灯对象CSemaphore,互斥对象CMutex,事件对象CEvent,以及临界区对象CCritialSection。本文

中写操作的优先级高于读操作,采用互斥对象完成线程的同步。步骤如下:

     1. 定义全局变量hMurtex,CreateMutex创建互斥对象

     2. 在每个需要同步的线程添加代码:

        WaitForSingleObject(hMutex,INFINITE); 线程挂起,监听互斥对象事件。当hMutex处于有信号状态时,该线程获得该互斥对象句柄权限,对资源进行操作

       ...............事件处理..

       .........................................

       Sleep(500);  线程挂起500ms   是其它线程有机会取抢占CPU资源

       ReleaseMutex(hMutex);  释放互斥对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值