互斥量在多程序,單程序不同執行緒間使用
阿新 • • 發佈:2018-12-03
直接上程式碼了:
#include <stdio.h> #include <stdlib.h> #include <Windows.h> int main() { /* 第二個引數:TRUE在建立互斥量之後立馬擁有該互斥量, 也可以建立後使用OpenMutex()函式獲取並佔有該互斥量 ReleaseMutex()用來釋放擁有的互斥量 FALSE任何執行緒都不擁有該互斥量,該互斥量處於激發態,處於有訊號狀態 */ HANDLE hMutex = CreateMutexA(NULL, TRUE, "MyMutex"); /* 說明成功建立新互斥量或者獲得已經存在互斥量控制代碼(Windows整個系統)*/ if (hMutex != NULL) { /* 說明獲得已經存在同名互斥量控制代碼(Windows整個系統)*/ if (GetLastError() == ERROR_ALREADY_EXISTS) { printf("Mutex Existed,Over\n"); system("pause"); return 0; } else { printf("Create Mutex Success\n"); Sleep(INFINITE); } } /* OpenMutex() // 引數1:獲取互斥量的許可權 引數2:該互斥量控制代碼釋放可以被子程序繼承 引數3:互斥量名 WaitForSingleObject(hMutex, INFINITE); // 等待該互斥量處於激發狀態,即不在被任何執行緒擁有 CloseHandle(hMutex); // 關閉控制代碼 */ return 0; }
在使用程序瀏覽器檢視互斥量時,發現互斥量名字如下:
前面綠線估計是Windows作業系統加上去的,後面的MyMutex菜是我們自己起的名字。