去他妈的世界 字幕组:CreateMutex()、OpenMutex()和CloseHandle()如何配对?
来源:百度文库 编辑:神马品牌网 时间:2024/08/29 05:06:23
我将Mutex用于多进程同步。
可是感到迷茫,不知这三个函数该如何配对?
显然第一次CreateMutex()之后最终要CloseHandle(),但中间使用OpenMutex()后是否要CloseHandle()?有时出现第二次使用CreateMutex()代替OpenMutex()的情况,不知这是否也要CloseHandle()?
请给出个试验代码说明问题好吗?
似乎明白了些,句柄和对象是两个不同的概念。CloseHandle()在字面上已经表达了是“关闭句柄”,不是关闭对象。因此使用CloseHandle()不用担心对象也被关闭了。而OpenMutex()返回的是一个指向mutex对象的句柄,是一个新的句柄,与CreateMutex()返回的句柄一样但不是同一个。
是像上面这段理解吗?如果是,那么又出现了个问题:
Mutex对象只用创建不用关闭吗?我没有找到所谓的关闭Mutex对象的句柄。
可是感到迷茫,不知这三个函数该如何配对?
显然第一次CreateMutex()之后最终要CloseHandle(),但中间使用OpenMutex()后是否要CloseHandle()?有时出现第二次使用CreateMutex()代替OpenMutex()的情况,不知这是否也要CloseHandle()?
请给出个试验代码说明问题好吗?
似乎明白了些,句柄和对象是两个不同的概念。CloseHandle()在字面上已经表达了是“关闭句柄”,不是关闭对象。因此使用CloseHandle()不用担心对象也被关闭了。而OpenMutex()返回的是一个指向mutex对象的句柄,是一个新的句柄,与CreateMutex()返回的句柄一样但不是同一个。
是像上面这段理解吗?如果是,那么又出现了个问题:
Mutex对象只用创建不用关闭吗?我没有找到所谓的关闭Mutex对象的句柄。
需要的
HANDLE hMutex = CreateMutex(..."mymutex");
HANDLE hMutex1 = OpenMutex(.."mymutex");
CloseHandle(hMutex1);
CloseHandle(hMutex);