2

我找不到明确的答案,所以就是这个地方。
Windows 的EnterCriticalSection行为方式是,我可以在同一个线程中多次锁定它,并且我需要在退出时解锁它的确切次数,这样它才能释放。

Linux 等价物是什么?pthread 互斥锁是否以相同的方式起作用?或者是多锁,单解锁...

4

4 回答 4

3

使用 boost::recursive_mutex,你就不必再考虑操作系统了

于 2012-07-12T11:29:28.347 回答
2

您可以使用属性 PTHREAD_MUTEX_RECURSIVE_NP 在递归模式下使用 pthread 互斥锁。

Linux 等价物在本文中进行了描述(参见“清单 2. 等价 Linux 代码”)

http://www.ibm.com/developerworks/linux/library/l-ipc2lin3/index.html

于 2012-07-12T11:51:10.570 回答
1

您为什么不使用 ADONTEC 的 W2LPL 库 ( http://adontec.com/windows-to-linux-port-library.htm ),它提供了几乎所有您正在寻找的东西。

于 2014-03-13T11:08:27.317 回答
-1

你可以使用互斥锁,看看这个http://en.wikipedia.org/wiki/Critical_section

只要确保将其置于递归模式即可。

以下链接描述了如何为 pthread 执行此操作:http: //www.ibm.com/developerworks/linux/library/l-ipc2lin3/index.html

于 2012-07-12T11:28:26.147 回答