多线程相关------互斥量Mutex
互斥量(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清理).