我找不到明確的答案,所以這是地方。
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