windows互斥量的使用
1、关于实现线程之间互斥
由于不同进程、线程之间共享变量、内存等,为了避免读写竞争导致的异常。需要对共享内容进行加锁。这里的把互斥源当成锁比较好理解。
2、实现步骤
- 第一步:创建一个指向锁的句柄
- 第二步:等待获取锁
- 第三步:获取锁后,进行相关的处理
- 第四步:释放锁
- 第五步:释放指向锁的句柄
3、具体实现使用的函数
-
第一步:CreateMutexW(CreateMutex)
该函数返回以个指向互斥源的句柄。也就是指向锁的句柄。如果创建失败则返回NULL。多次执行该创建语句,则返回指向所的句柄。通过GetLastError可以获取ERROR_ALREADY_EXISTS的消息。
其中bInitialOwner = true :创建的句柄,即拥有了该互斥源。需要有releadMutex相对应。再次执行该值为true的createMutex函数的话,不再获取该互斥源。
其中bInitialOwner = false:创建的句柄,不拥有互斥源(锁)。
lpMutexAttributes = NULL,使用默认的安全模式。