多线程相关------互斥量

Posted 715776681

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关------互斥量相关的知识,希望对你有一定的参考价值。

互斥量(Mutex)

 互斥量是一个可以处于两态之一的变量:解锁和加锁.只有拥有互斥对象的线程才具有访问资源的权限.并且互斥量可以用于不同进程中的线程的互斥访问.

相关函数:

CreateMutex用于创建互斥量

HANDLE WINAPI CreateMutex(
  _In_opt_ LPSECURITY_ATTRIBUTES lpMutexAttributes,
  _In_     BOOL                  bInitialOwner,
  _In_opt_ LPCTSTR               lpName
);

lpMutexAttributes表示安全控制,一般直接为NULL.

bInitialOwner确定互斥量的初始拥有者.TRUE表示创建互斥量的线程拥有该互斥量对象.FALSE表示没有线程拥有该互斥量,其处于触发状态,可用获取并占用.

lpName表示互斥量的名称.多进程间可用用名称来保证是同一个互斥量.

若互斥量创建成功,则返回其句柄,否则返回NULL.

OpenMutex用于打开互斥量

HANDLE WINAPI OpenMutex(
  _In_ DWORD   dwDesiredAccess,
  _In_ BOOL    bInheritHandle,
  _In_ LPCTSTR lpName
);

dwDesiredAccess表示访问权限,一般用MUTEX_ALL_ACCESS.

bInheritHandle表示互斥量句柄继承性,一般用TRUE.

lpName表示需要打开的互斥量名称.

若打开成功则返回互斥量句柄,否则返回NULL.

ReleaseMutex用于释放互斥量的使用权,其他线程可以获取互斥量.

BOOL WINAPI ReleaseMutex(
  _In_ HANDLE hMutex
);

hMutex表示需要释放的互斥量句柄.

若释放成功则返回非0,否则返回0.

 

互斥量使用完成,调用CloseHandle进行清理(所有内核对象都可以使用CloseHandle清理).

 

以上是关于多线程相关------互斥量的主要内容,如果未能解决你的问题,请参考以下文章

多线程并发编程

多线程(上)

线程同步与互斥详解

Linux多线程——互斥和同步

Linux篇第十四篇——多线程(线程同步和互斥+线程安全+条件变量)

Linux篇第十四篇——多线程(线程同步和互斥+线程安全+条件变量)