我们经常会遇到同一个进程中的不同线程(或者不同进程的不同线程)需要访问同一块内存块(例如同一个指针、共享内存),为了避免同时访问,可以使用互斥量(MUTEX)。
互斥量使用步骤如下:
1、 定义一个操作句柄:HANDLE m_hMutex;
2、 创建或者打开互斥量:hMutex =CreateMutex(NULL,FALSE,”TEST_MUTEX”);
可以创建有名字的互斥量,当不同进程中的线程需要访问统一内存块时,就非常有用。一个进程创建,另一个进程只要调用
hMutex =OpenMutex(MUTEX_ALL_ACCESS,FALSE, ”TEST_MUTEX”);打开即可使用同一个互斥量进行控制。
3、 等待互斥量空闲:WaitForSingleObject(m_hMutex,INFINITE);
4、 释放互斥量,让它处于空闲状态:ReleaseMutex(m_hMutex);
5、 关闭互斥量: CloseHandle(m_hMutex);
进程中止前,一定要释放互斥体,如不慎未采取这个措施,就会将这个互斥体标记为废弃,并自动释放所有权。共享这个互斥体的其他