我找不到明确的答案,所以就是这个地方。
Windows 的EnterCriticalSection
行为方式是,我可以在同一个线程中多次锁定它,并且我需要在退出时解锁它的确切次数,这样它才能释放。
Linux 等价物是什么?pthread 互斥锁是否以相同的方式起作用?或者是多锁,单解锁...
使用 boost::recursive_mutex,你就不必再考虑操作系统了
您可以使用属性 PTHREAD_MUTEX_RECURSIVE_NP 在递归模式下使用 pthread 互斥锁。
Linux 等价物在本文中进行了描述(参见“清单 2. 等价 Linux 代码”)
http://www.ibm.com/developerworks/linux/library/l-ipc2lin3/index.html。
您为什么不使用 ADONTEC 的 W2LPL 库 ( http://adontec.com/windows-to-linux-port-library.htm ),它提供了几乎所有您正在寻找的东西。
你可以使用互斥锁,看看这个http://en.wikipedia.org/wiki/Critical_section
只要确保将其置于递归模式即可。
以下链接描述了如何为 pthread 执行此操作:http: //www.ibm.com/developerworks/linux/library/l-ipc2lin3/index.html