我有兩個進程將運行,一個將從共享內存(mmap)讀取,另一個將寫入該共享內存(mmap)。這些進程分別在兩個不同的終端中啓動,但它們需要同步,以便在一個進程正在寫入時,它會在另一個進程從內存中讀取之前寫入全部數量。我所看到的與共享內存互斥鎖有關的所有帖子都從一個主程序中產生線程/進程。有什麼辦法可以創建一個共享的互斥鎖,可以被兩個獨立的程序使用嗎?C多進程訪問共享內存互斥鎖
0
A
回答
0
對不起,但你運氣不好。 Pthreads庫沒有'命名'互斥體的概念,所以兩個獨立的進程不能可靠地共享一個。
是的,您可以在共享內存中創建互斥鎖,並且可以在其他進程中使用此互斥鎖,但是您無法確保互斥體在第二個進程中通過第一個進程完全初始化。對於trully獨立程序,我強烈建議使用信號量。
0
您可以在mmap
ped文件中創建共享互斥鎖。如果您使用的是Linux並且擁有足夠新的內核,您甚至可以創建一個未鏈接的臨時文件mmap
它;初始化互斥量,然後只有link it to the final location。或者,您可以使用文件鎖定來拒絕對它的訪問,直到初始化完成。
pthread_mutexattr_init
POSIX manuals at linux.die.net的信號量示例在我的Linux 4.2.0-27 Ubuntu上確實有效。
相關問題
- 1. pthread進程共享互斥死鎖
- 2. 共享互斥鎖的交替例程
- 3. 在C++ 98互斥鎖中鎖定變量共享數據互斥鎖
- 4. C++多線程互斥鎖問題
- 5. 1字節共享內存需要互斥鎖
- 6. Android中的進程共享互斥鎖和條件變量
- 7. C++ - 使用多進程共享內存
- 8. 多線程互斥鎖可以使用多個互斥鎖
- 9. 鎖定互斥鎖vs訪問磁盤
- 10. boost進程間共享互斥和boost進程間條件變量共享互斥
- 11. 多線程和互斥鎖
- 12. 互斥多進程
- 13. C++ - 進程之間共享的互斥體
- 14. C# - 鎖定互斥鎖問題
- 15. C++是互斥體鎖定共享資源的唯一方式
- 16. 鎖定多個互斥鎖
- 17. 使用互斥鎖從多個線程併發訪問向量
- 18. 如何在C中使用互斥鎖進行多線程?
- 19. C++私人互斥訪問
- 20. OpenCL-共享內存訪問
- 21. 當一個用戶崩潰時共享內存中的互斥鎖?
- 22. 共享內存併發算法與互斥鎖/信號量之間的關係
- 23. Node.js線程共享內存訪問
- 24. 跨線程共享內存訪問
- 25. 多進程python與共享內存
- 26. 由多個子進程鎖定互斥鎖
- 27. 進程間通信:共享內存vs線程對象訪問
- 28. 跨進程使用互斥鎖
- 29. C內存共享問題
- 30. std ::共享內存中的互斥量不工作
參見http://stackoverflow.com/q/2389353。 –
可能需要提高你的搜索技能。在stackoverflow之內和之外有很多答案。例如:[是否可以在Linux/UNIX上的多處理情況下使用互斥鎖?](http://stackoverflow.com/questions/9389730/is-it-possible-to-use-mutex-in-multiprocessing-case- on-linux-unix) – kaylum
@kaylum,因爲它並不能真正解決OP的問題 - 第一個進程需要在第二個進程讀取它之前在共享內存中創建互斥鎖,並且無法確保創建互斥鎖。 – SergeyA