2012-05-15 43 views
0

我試圖使用消息隊列在Linux中,是有可能做下面的鎖或不與消息隊列

過程1已經消息隊列命名一個

生產1 & 2發送消息到一個沒有鎖定機制,那好嗎?

+0

一般來說它取決於你的意思是「鎖定」的東西,你所說的「隊列」的意思。嚴格來說,可以使用CPU原子指令來代替OS提供的自旋鎖或線程同步原語。 – 2012-05-15 22:14:09

+0

我的意思是系統V或POSIX消息隊列 –

+0

並通過鎖,讓我們說信號量 –

回答

1

Sys V消息隊列提供優先級,以便可以指定一個特定的隊列接收者並可以獲得「針對」它的消息。沒有爭用。隊列讀取器也可以訪問任何消息,具體取決於msgrcv()中的mtype值。 POSIX消息隊列有點不同。一般來說,您可以使用Sys V隊列,而不必擔心鎖定資源。 Sys V信號隊列和共享內存也有一些缺點。就像它們是內核持久性的事實一樣。

嘗試http://beej.us/guide/bgipc/

+0

謝謝吉姆,我想我也不需要鎖POSIX隊列,請檢查此鏈接,讓我知道如果我錯了。 http://mij.oltrelinux.com/devel/unixprg/#ipc__sockets –

+0

當我讀它時,你的鏈接不是POSIX msg隊列,而是套接字。你也可以圍繞POSIX隊列上的資源控制進行編碼。它只是在Sys V,IMO上實現起來更簡單。 –

+0

POSIX消息隊列也是內核持久性的。請參閱(持久性)下的man mq_overview:POSIX消息隊列具有內核持久性:如果未由mq_unlink(3)刪除,則消息隊列將存在,直到系統關閉。 – Sonny