互斥锁Mutex

对于一个Mutex,在没有进程/线程抢占的时候,一直处于signaled状态。一旦有一个进程/线程抢到控制权,状态就变成nonsignaled。因此,同一时刻,只能有一个进程/线程抢到控制权。

// 创建互斥锁
HANDLE CreateMutexA(
  LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针

  // True :创建MutexObject的线程,立刻拥有Mutex的控制权。
  // False:必须使用等待函数waitForSigleObject。
  BOOL                  bInitialOwner, 
  LPCSTR                lpName  // 指定互斥体对象的名字,可以用vbNullString创建一个未命名的互斥体对象。

);

// 释放控制权
BOOL ReleaseMutex(
  HANDLE hMutex
);


// 一般用于跨进程获取已经创建的Mutex对象
HANDLE OpenMutexW(
  // 访问的方式:
  // SYNCHRONIZE 允许互斥体对象同步使用
  // MUTEX_ALL_ACCESS 请求对互斥体的完全访问
  DWORD   dwDesiredAccess, 
  BOOL    bInheritHandle,  // true,子进程能够继承句柄
  LPCWSTR lpName           // 指定互斥体对象的名字
);

Demo:
svn://gitee.com/sudaidai/Knowledge_List_of_C
文件夹路径:WindowsAPI/Mutex

你可能感兴趣的:(互斥锁Mutex)