2016-04-26 232 views
2

這可能是一個非常愚蠢的問題,但是谷歌搜索沒有解決問題。我正在編寫一個使用消息隊列將一系列值發送到不同進程的程序。我已經完成了研究,表明我使用msgsnd()在隊列和msgrcv()上存儲消息來接收消息。我需要在隊列中存儲開始號碼和結束號碼。所以我的問題是我可以在這個隊列中存儲多條消息,如果是的話,我該如何去存儲和檢索它們? TIA爲您提供所有幫助。消息隊列中的多條消息

+2

Err..call'msgsend' and'msgrecv' for each message for each message。這個答案太明顯了嗎?還是你問一些更微妙的東西? – kaylum

+0

這是不是在名稱?這是一個消息**隊列** - 所以你可以發送幾條消息,你會按照你發給他們的相同順序接收它們。 – immibis

+0

是的,我知道人們會侮辱。謝謝 – jynx678

回答

0

queue的概念意味着你可以在(msgsnd)中放入一些東西,在隊列中創建一條消息。要收到一條消息,您必須致電msgrcv。每次接收通常只會返回一條消息,因此如果您發送n消息,則必須收到n消息。

隊列通常被視爲FIFO(先進先出),因此由第一個msgsnd創建的消息將是由msgrcv返回的第一條消息。 如果您通過網絡(和/或集羣中)運行消息隊列,則這是一個弱點。由於網絡延遲/故障轉移/重試等消息可能出現亂序,因此通常建議構建具有所有必要信息的消息以正確處理這些情況。