(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
例如下面创建一个Mutex
static HANDLE hMutex = CreateMutexA(NULL, FALSE, "changeNumValue2");
在函数中使用时:
void changeValue(void* args) { // 锁定对象 WaitForSingleObject(hMutex, INFINITE);
…
// 释放锁定 ReleaseMutex(hMutex); } |
在Main函数中的最后释放mutex
CloseHandle(hMutex); |
CreateMutexA的参数2:TURE/FALSE代表初始是否初始锁定。
WaitForSingleObject等待开锁,并且开锁后由本线程锁定该Mutex
ReleaseMutex释放线程对Mutex的锁定
CloseHandle(hMutex) 关闭释放该Mutex
线程的打开关闭:
// 执行线程函数体 HANDLE hThread = CreateThread(NULL, 0, LPTHREAD_START_ROUTINE(changeValue), & nNum, NULL, threadIds);
…
// 等待线程执行 WaitForSingleObject(hThread, -1);
// 关闭线程Handle CloseHandle(hThread); |
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)