Vxworks 訊息佇列

2021-10-12 07:25:11 字數 1394 閱讀 6703

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

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

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

2. msgqsend

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

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

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

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

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

4. msgqdelete

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

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

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

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

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

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

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

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

Vxworks訊息佇列小結

訊息佇列與其他方式的一些比較 1 訊號量使用方便,可以解決很多任務間的協調問題,但是訊號量所傳遞的資訊有限,而記憶體共享雖然傳遞資訊可以大些,但是不標準。訊息佇列作為一種折忠方式用於執行緒之間的資訊交換。2 訊息佇列允許許多的訊息排隊,而每個資訊可以有不同長度,而傳統管道中的資料僅僅是乙個資料流,沒...

vxworks任務通訊之訊息佇列

訊息佇列的基礎使用 訊息佇列 任務a向任務b傳送訊息 include include include include include define task priority a 130 define task priority b 130 define stack size 225 int tas...

Vxworks 程序間通訊1 訊息佇列

1.訊息佇列用於task之間傳遞資訊。2.多個任務向同乙個訊息佇列傳送訊息或接收訊息。3.isr可以用no wait方式傳送訊息。2.msgqsend c sharp view plain copy status msgqsend msg q id msgqid,訊息佇列id char buffer...