OpenMutex和pthread

时间:2014-08-07 13:14:19

标签: linux windows pthreads mutex

我注意到,在pthread库下,没有等同于Win32下的OpenMutex()或带信号量的semget()等功能。

为什么?

这是否意味着我必须在任何情况下使用pthread_create()

1 个答案:

答案 0 :(得分:1)

在Win32中使用字符串名称创建或访问内核对象(互斥锁,事件,信号量)通常仅用于跨进程同步。

在Win32中,为了在相同的进程内进行同步,适当的模式是创建Win32对象一次,然后只需要与需要访问它的不同线程共享其HANDLE。但是,如果你的锁不需要超出同一进程的线程,那么使用CRITICAL_SECTION对象通常会更有效。

pthreads创建的同步对象只能在同一进程中共享。因此,如果您在pthreads中创建互斥锁 - 它只是意味着与同一进程中的其他线程共享。

如果你需要在Unix中创建一个跨进程锁,你将不得不使用另一种适当的机制(即semget和朋友)。