2012-10-24 62 views

回答

2

當調用fork()時,整個內存空間都是重複的,包括互斥鎖,所以要回答你的問題,新的互斥量將是父母的互斥量的副本,所以你必須mmap它。

注意: 您需要使用pthread_mutexattr_getpshared()在互斥屬性上設置PTHREAD_PROCESS_SHARED標誌。

+0

但它不工作的方式,如文件或套接字描述符被複制並映射到相同的系統資源?或者pthread互斥體後面沒有內核資源?它是用戶空間中的數據/代碼的和平? – user1132655

+0

執行明智我不確定,但它絕對看起來像只是一些重複的數據。所以結論是兩個進程都需要訪問相同的互斥體,而不是單獨的副本。 – iabdalkader