兩個Linux進程打開並mmap相同的/ dev/shm/shared內存文件並將其用作公共內存。問題:一個進程「喚醒」另一個進程以通知它應該在內存中查找的最簡單和最好的方法是什麼? 例如,一個進程是否可以爲其他進程的文件描述符導致poll()事件? 該解決方案不需要便攜,但我希望它很簡單。在共享內存文件上導致Linux輪詢事件
7
A
回答
2
這就是爲什麼POSIX有條件變量。
在共享內存區域中定義共享的POSIX條件變量及其關聯的互斥鎖。
然後有一個線程等待條件變量,另一個線程則希望另一個線程在內存中查找條件變量事件。
網絡上有很多關於條件變量的內容。 這是一個很不錯的短的一個:https://computing.llnl.gov/tutorials/pthreads/#ConditionVariables
0
你也可以考慮使用信號量(POSIX命名的信號量)來解決這個問題。
一個簡單的例子,使用共享內存(在它是在系統V,但可以與POSIX使用它太的例子)和POSIX信號是在鏈路, How can 2 processes talk to each other without pipe()?
相關問題
- 1. Linux共享內存
- 2. 內存共享.o文件
- 3. 在共享主機Linux帳戶上使用共享內存
- 4. 共享內存,寫入文件
- 5. linux共享內存實際在哪裏?
- 6. 誰可以在Linux共享共享內存?
- 7. Linux上是否存在與.def文件等效的控制共享庫中導出函數名稱的文件?
- 8. ZF2共享事件
- 9. MVVM共享事件
- 10. Libgdx事件輪詢
- 11. 長輪詢事件
- 12. 長輪詢事件
- 13. 文件更改事件網絡共享
- 14. Linux的RSS和共享內存
- 15. c/linux-ftruncate和POSIX共享內存段
- 16. Linux共享內存分段故障
- 17. Linux共享內存分配行爲
- 18. Linux共享內存:shmget()vs mmap()?
- 19. 如何在Linux中通過PHP共享或複製共享文件夾中的共享文件夾
- 20. 在共享內存
- 21. 在Linux中如何以及何時移除共享內存備份文件?
- 22. 上的共享文件夾
- 23. 進程共享內存不共享(c,linux)
- 24. 不帶內存映射文件的共享內存
- 25. 在Linux上使用共享庫來減少內存負載
- 26. 不能創建共享內存鍵12345:文件存在
- 27. iTextSharp在內存中創建文件導致損壞的文件
- 28. 內存共享
- 29. Posix共享內存導致總線錯誤
- 30. 軟件分佈式共享內存