我從來沒有見過任何項目或任何使用posix或sysv消息隊列 - 和好奇,有什麼問題或項目你們用它們來?你有什麼使用sysv/posix消息隊列?
回答
我有一系列命令需要順序執行,但主要程序流程不依賴於它們的完成,所以我排隊起來,並經由被獨立地執行的System V消息隊列它們傳遞到另一個處理的主要計劃。由於消息隊列提供異步通信協議,因此它們非常適合執行此任務。
說實話,我用System V消息隊列,因爲我從來沒有使用過他們,我想。我確信還有其他IPC方法可以使用。
這已經有一段時間,因爲我做了任何真正的VxWorks編程,但你也可以找到在VxWorks的應用程序中使用消息隊列。根據VxWorks Application Programmer's Guide(谷歌搜索),一個CPU內的主任務間通信機制是消息隊列。 VxWorks使用兩個消息隊列子程序庫(POSIX和VxWorks)。
我曾經寫過一個文字模式的I/O生成工具,曾在負責更新UI和若干工作線程來做實際的I/O工作的一個線程。當一個工作線程完成一個I/O時,它發送一個更新消息給UI線程。我使用POSIX消息隊列實現了這個消息系統。
爲什麼要這樣實施?當時聽起來是個好主意,我很好奇他們是如何工作的。我想我可以解決問題並同時學習一些東西。我可以使用許多不同的技術,而且我不認爲我選擇這種技術有什麼深遠的原因。直到後來我才意識到這一點,但當我必須將該實用程序移植到另一個系統時,我很高興我使用了POSIX隊列(它也符合POSIX標準,所以我不必擔心移植外部庫來獲取我的應用程序運行)。
,因爲它是一個IPC機制,您可以使用它的IPC是肯定的。通過這種機制,您可以編寫多進程事件處理應用程序,其中所有應用程序都使用隊列,並且每個應用程序都在等待特殊類型的消息(將發生特殊事件)。當消息到達時,進程接收消息,處理並將結果放回隊列中,以便其他進程可以使用它。
一旦我使用消息隊列寫這樣一個應用程序。使用它非常容易,並且不需要像信號量這樣的進程間同步機制。在所有你需要的只是發送一個結構或某種打包數據到其他進程的情況下,你可以使用它來代替內存映射文件的共享內存。消息隊列比任何其他IPC機制更容易使用。
This book包含您需要了解的有關Linux中消息隊列和其他IPC機制的所有信息。
- 1. 應該使用什麼SystemV消息隊列或POSIX消息隊列?
- 2. 什麼是消息隊列?爲什麼有人應該在網站上使用?
- 3. 爲什麼消息隊列使用了多線程?
- 4. 隊列中沒有消息
- 5. 管道和消息隊列之間有什麼區別?
- 6. 爲什麼消息隊列中沒有輪詢/選擇機制?
- 7. 什麼使AMQ隊列的掛起消息號碼爲負?
- 8. Websphere消息隊列
- 9. 消息從隊列
- 10. Sinatra消息隊列
- 11. Boost消息隊列
- 12. unix消息隊列
- 13. IPC - 消息隊列
- 14. 消息隊列ENOMEM
- 15. 使用ftok作爲消息隊列
- 16. 使用AWS的消息隊列
- 17. 我應該使用消息隊列嗎?
- 18. 使用Laravel的隊列發送消息
- 19. 堆棧溢出使用消息隊列
- 20. 沒有本地消息隊列服務器的遠程消息隊列
- 21. 消息隊列:每條消息保證
- 22. 消息隊列中的多條消息
- 23. 消息隊列與消息傳遞
- 24. 如何使用JMX監視消息隊列消息
- 25. 使用ISO8583消息的消息隊列與TCP
- 26. 使用消息隊列在進程之間傳遞消息
- 27. 如何使用rabbitMQ將消息發送到消息隊列?
- 28. 具有舊消息的監控隊列
- 29. 消息隊列+ ajax沒有觸發
- 30. STOMP消息沒有到達隊列
你還沒有解釋爲什麼人們會想要這些蹩腳的老東西而不是套接字。 – tchrist 2013-03-01 18:26:23
實際上,消息隊列允許您將多個應用程序彼此分開,並創建允許不同組件彼此分離的Message Broker體系結構;並且允許你實現類似RPC的機制,套接字可以用作實現這種體系結構的傳輸機制,但是你需要一個更高級別的協議。要了解更多關於消息隊列的信息,請參閱http://www.zeromq.org – gst 2013-04-05 10:17:49