2015-07-05 73 views
0

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

ghmu_handle = CreateMutex(NULL, false, NULL); 

然后它

  • 创建的线程和
  • 线程获得互斥体的所有权和
  • 它做了关键部分的一些工作和
  • 使用发布的互斥ReleaseMutex()。
  • 现在main()只是简单地叫做CloseHandle(ghmu_handle)而没有获得所有权。

这是正确的方式,还是我们需要获得所有权关闭处理?

回答

1

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

另请注意,不能在没有手柄的情况下释放互斥锁。

+0

您需要拥有**才能释放**互斥量。您不需要所有权来**关闭**互斥锁句柄。 –