我注意到,在pthread库下,没有等同于Win32下的OpenMutex()
或带信号量的semget()
等功能。
为什么?
这是否意味着我必须在任何情况下使用pthread_create()
?
答案 0 :(得分:1)
在Win32中使用字符串名称创建或访问内核对象(互斥锁,事件,信号量)通常仅用于跨进程同步。
在Win32中,为了在相同的进程内进行同步,适当的模式是创建Win32对象一次,然后只需要与需要访问它的不同线程共享其HANDLE。但是,如果你的锁不需要超出同一进程的线程,那么使用CRITICAL_SECTION对象通常会更有效。
pthreads创建的同步对象只能在同一进程中共享。因此,如果您在pthreads中创建互斥锁 - 它只是意味着与同一进程中的其他线程共享。
如果你需要在Unix中创建一个跨进程锁,你将不得不使用另一种适当的机制(即semget和朋友)。