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...