1
在Linux上進行寫入時分寫操作。在父進程中創建pthread進程間互斥時,它是否會對子進程有效,或只有在將它映射到共享內存時纔會起作用。沒有mmap的pthread mutex可能嗎?
在Linux上進行寫入時分寫操作。在父進程中創建pthread進程間互斥時,它是否會對子進程有效,或只有在將它映射到共享內存時纔會起作用。沒有mmap的pthread mutex可能嗎?
當調用fork()
時,整個內存空間都是重複的,包括互斥鎖,所以要回答你的問題,新的互斥量將是父母的互斥量的副本,所以你必須mmap
它。
注意: 您需要使用pthread_mutexattr_getpshared()
在互斥屬性上設置PTHREAD_PROCESS_SHARED
標誌。
但它不工作的方式,如文件或套接字描述符被複制並映射到相同的系統資源?或者pthread互斥體後面沒有內核資源?它是用戶空間中的數據/代碼的和平? – user1132655
執行明智我不確定,但它絕對看起來像只是一些重複的數據。所以結論是兩個進程都需要訪問相同的互斥體,而不是單獨的副本。 – iabdalkader