VS C++ 互斥量 CreateMutex

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youshijian99/article/details/80436383
创建一个有名和匿名的互斥锁
HANDLE CreateMutex(
      LPSECURITY_ATTRIBUTES lpMutexAttributes, // pointer to security attributes
      BOOL bInitialOwner,  // flag for initial ownership
      LPCTSTR lpName       // pointer to mutex-object name

);
lpMutexAttributes // 是否被子进程继承,NULL不能被继承
bInitialOwner // TRUE, 调用线程拥有这个互斥量,FALSE 调用线程不拥有这个互斥量
lpName // 互斥量名称,NULL为匿名
返回值:
成功:互斥量句柄
失败:GetLastError function returns ERROR_ALREADY_EXISTS;或 NULL。

释放互斥量
BOOL ReleaseMutex(
  HANDLE hMutex   // handle to mutex object
);
返回值:
成功:返回非0

失败:返回0

获取互斥量
DWORD WaitForSingleObject(
  HANDLE hHandle,        // handle to object to wait for
  DWORD dwMilliseconds   // time-out interval in milliseconds。 INFINITE 无限等待
);

例程

#include <Windows.h>
#include <cstdio>

int g_var = 0;
static HANDLE hMutex = INVALID_HANDLE_VALUE;
#define GET_MUTEX() do{WaitForSingleObject(hMutex, INFINITE);}while(0==1)
#define RELASE_MUTEX() do{ReleaseMutex(hMutex);}while(0==1)

int main(int argc, char **argv)
{
	hMutex = CreateMutex(NULL, FALSE, NULL);

	GET_MUTEX();
	g_var = 1;
	RELASE_MUTEX();

	getchar();
	return 0;
}

猜你喜欢

转载自blog.csdn.net/youshijian99/article/details/80436383