Vxworks 程序間通訊1 訊息佇列

2021-06-03 23:54:21 字數 1295 閱讀 2099

1.訊息佇列用於task之間傳遞資訊。

2.多個任務向同乙個訊息佇列傳送訊息或接收訊息。

3.isr可以用no_wait方式傳送訊息。

2. msgqsend

[c-sharp]view plain

copy

status msgqsend  

(  msg_q_id msgqid, /* 訊息佇列id */  

char *buffer, /* 指向要傳送的訊息的指標*/  

uint nbytes, /* 訊息長度*/  

int timeout, /* 超時時間(tick)/no-wait/forever */  

int priority /* msg_pri_normal 或msg_pri_urgent */  

)  

3.msgqreceive

[c-sharp]view plain

copy

int msgqreceive  

(  msg_q_id msgqid, /* 訊息佇列id */  

char *buffer, /* 指向接訊息的收緩衝的指標*/  

uint maxnbytes, /* 接收緩衝的位元組數*/  

int timeout /* 超時時間(tick)/no-wait/forever */  

)  

4. msgqdelete

[c-sharp]view plain

copy

status msgqdelete  

(  msg_q_id msgqid /* 需要刪除的訊息佇列的id */  

)  

一旦msgqdelete()操作執行完畢,阻塞在該訊息佇列上的task,包括阻塞在傳送佇列、接收佇列上的task,都將被喚醒(unpend),而訊息佇列的id從此不再有效。

1.為每乙個task建立專用msgq。

2.所有需發給該task的message都送到唯一msgq。

3.因為訊息佇列有copy & maxlength的特性,所以訊息佇列中我們可以只存放指標。

VxWorks任務間通訊

1.共享記憶體 雙向鍊錶 環形緩衝 2.互斥 中斷鎖 作用域僅限於中斷內部。優先順序鎖 共享記憶體中,低優先順序的任務不允許被打斷,優先順序鎖就被使用。弊端 會完全禁止任務的排程。3.訊號量 一種指向semaphore結構的指標 sem eventsend err notify,釋放訊號量出錯返回錯...

程序間訊息佇列通訊

要保證server能夠接收client的訊息,就必須保證server的生成的msg的識別符號是一樣的,也就是兩個用的key是必須一樣的。msglucy.c include include include include include include include include include ...

程序間通訊(訊息佇列)

在嵌入式linux應用開發中,linux程序通訊的方式有6種,分別是管道 pipe 及有名管道 named pipe 訊號 signal 訊息佇列 msg 共享記憶體 shm 訊號量 和套接字 socket 在這我就簡單的描述一下程序通訊中的資訊佇列 msg 首先,訊息佇列的實現有重要的幾步 1 建...