1. 程式人生 > >互斥量在多程序,單程序不同執行緒間使用

互斥量在多程序,單程序不同執行緒間使用

直接上程式碼了:

#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菜是我們自己起的名字。