我找不到明确的答案,所以这是地方。
Windows'EnterCriticalSection
的行为方式是我可以在同一个线程中多次锁定它,并且我需要在出路时将其解锁,以便它可以免费使用。Linux相当于windows的EnterCriticalSection
什么是Linux等价物? pthread互斥体是否以相同的方式起作用?或者是多个锁,一个解锁...
我找不到明确的答案,所以这是地方。
Windows'EnterCriticalSection
的行为方式是我可以在同一个线程中多次锁定它,并且我需要在出路时将其解锁,以便它可以免费使用。Linux相当于windows的EnterCriticalSection
什么是Linux等价物? pthread互斥体是否以相同的方式起作用?或者是多个锁,一个解锁...
您可以使用递归模式并行线程互斥,使用属性PTHREAD_MUTEX_RECURSIVE_NP。
Linux的等效本文中被描述(见 “listing2。相应的Linux代码”)
http://www.ibm.com/developerworks/linux/library/l-ipc2lin3/index.html。
您可以使用一个互斥体,都看向这个http://en.wikipedia.org/wiki/Critical_section
只要确保你把它放到递归模式。
以下链接介绍如何做到这一点的并行线程:http://www.ibm.com/developerworks/linux/library/l-ipc2lin3/index.html
为什么不使用ADONTEC的W2LPL库(http://adontec.com/windows-to-linux-port-library.htm),它几乎可以满足您的所有需求。
posix支持递归互斥锁(同一个线程可以锁定/解锁n次的单个互斥锁)。然而,国际海事组织的这种需要表明了糟糕的设计...... – Nim 2012-07-12 11:28:59
可能重复[什么是Linux的等效于微软的关键部分的gcc?](http://stackoverflow.com/questions/3508507/what-are-gcc-on -linuxs-equivalent-to-microsofts-critical-sections) – 2012-07-12 11:32:34
@Nim:不好的设计部分取决于。我同意,应尽可能避免它,但有时避免它导致有更糟糕的设计^^ – Andy 2012-07-12 11:34:28