佇列是任務間通訊的主要形式。它們可用於在任務之間以及中斷和任務之間傳送訊息。在大多數情況下,它們被用作執行緒安全fifo(先進先出)緩衝區。
```uint8_t fifomessage[10] = "hello";
queuehandle_t tmpqueuehandle;
//第一步 : 建立佇列
tmpqueuehandle = xqueuecreate( 10 , sizeof(fifomessage) );
if(null != tmpqueuehandle) //建立佇列成功
/*第二步:發生訊息
注意項: xqueuesend( xqueue, pvitemtoqueue, xtickstowait ) xtickstowait項,阻塞時間,指示當佇列滿的時候,任務進入阻塞態,等待佇列空閒的最大時間。
如果值給0的話,當佇列滿的時候,就立即返回,
當值為portmax_delay (include_vtasksuspend需為1)的時候,程式就會一直死等,相當於while{};直到佇列有空閒的佇列項。
當為0,佇列滿的時候,則執行printf("queue send data fail\r\n");
當值為portmax_delay,佇列滿的時候,程式阻塞,不執行任何語句,也就不執行printf("queue send data fail\r\n");
*/a:
led1_task_cnt++;
if(led1_task_cnt < 24)
else //佇列已滿,訊息發生失敗。
}else
b:覆蓋寫
xqueueoverwrite()旨在用於長度為1的佇列,這意味著隊列為空或完整。建立佇列的時候,長度只能為1.
tmpqueuehandle = xqueuecreate( 1 , sizeof(fifomessage) );
if( pdpass == xqueueoverwrite(tmpqueuehandle, fifomessage) ) //返回值只有pdpass
/*接受資料
*/a:
if( pdtrue == xqueuereceive( tmpqueuehandle, &tmp, (ticktype_t)10 ) )
b:從佇列中接收專案而不從佇列中刪除專案。該專案通過複製接收,因此必須提供足夠大小的緩衝區。建立佇列時定義複製到緩衝區中的位元組數。
成功接收的專案仍保留在佇列中,因此將在下一次呼叫或呼叫xqueuereceive()時再次返回。
不得在中斷服務程式中使用此巨集。
if( pdtrue == xqueuepeek ( tmpqueuehandle, &tmp, (ticktype_t)10 ) ) //複製佇列的資料,不會刪除這個資料
```
第四章 棧與佇列
adt abstract data type 棧 stack data 同線性表,元素具有相同的型別,相鄰元素具有前驅和後繼關係。operation initstack s 初始化操作,建立乙個空棧s。destroy s 若棧存在,則銷毀它 clearstack s 將棧清空 stackempty ...
第四章 繼承
一 為什麼要繼承 在物件導向中我們將具有很多重複內容的類中的內容提取出來,寫成乙個單獨的類 其他類只需要繼承就能取得這些功能,同時可以在自己類中寫入獨特的自定義方法 二 繼承語法 inte ce circle nsobject 繼承是在介面中定義的 冒號後的類名是要整合的類,nsobject 是co...
第四章 物件
三個特性 身份 型別 值 每個物件都有唯一的身份來標識自己,使用內建函式id 得到。例子 usr bin env python coding utf 8 a 32 print a b a print id a id b 結果 d python27 python.exe e workp python ...