线程是否需要获得互斥对象的所有权才能关闭互斥对象的句柄

Does thread need to get the ownership of the mutex to close the handle of the mutex

本文关键字:对象 句柄 所有权 是否 线程      更新时间:2023-10-16

我看到了一些关于使用互斥的示例程序。我只是想知道线程是否必须获得互斥锁的所有权才能关闭句柄,因为其中一个示例在main((中创建了一个互斥锁。

ghmu_handle = CreateMutex(NULL, false, NULL);

然后是

  • 创建了一个线程
  • 线程获得了互斥对象的所有权
  • 它在关键部分做了一些工作
  • 使用ReleaseMutex((释放互斥对象
  • 现在,main((简单地调用了CloseHandle(ghmu_handle(,而没有获得所有权

这是正确的方式吗?还是我们需要获得所有权才能关闭手柄?

不,您不需要拥有互斥锁来关闭句柄。这将是一个不合理的要求,因为可能不可能声称互斥体的所有权,例如,如果另一个进程持有它

还要注意,没有句柄就不能释放互斥对象。