mutex 属于内核对象,能够保证线程对单个资源的互斥访问权。创建互斥对象需要调用的函数,CreateMutex().
HANDLE WINAPI CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, //指向SECURITY_ATTRIBUTES 结构的指针, 若为NULL,则互斥对象使用默认的安全性 BOOL bInitialOwner, //true,获得所有权;false,不获得所有权 LPCTSTR lpName //指定互斥对象的名称,如果此参数为NULL,则创建一个匿名的互斥对象 );
通过WaitForSigleObject()函数获取对象的所有权:
DWORD WINAPI WaitForSingleObject( HANDLE hHandle, //请求对象的句柄 DWORD dwMilliseconds //指定等待的时间,以毫秒为单位; 若设置为INFINITE,则永远等待 );
释放指定对象的所有权,通过 ReleaseMutex(HANDLE hMutex)函数实现。
比如说
main()
{
hMutex=CreateMutex(NULL,FALSE,NULL); /// 创建互斥对象
}
//线程1的入口函数
*****()
{
WaitForSing
}