互斥量在多进程,单进程不同线程间使用

直接上代码了:

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

猜你喜欢

转载自blog.csdn.net/singleyellow/article/details/84242505