1.共享內存
雙向鏈表
環形緩衝
2.互斥
中斷鎖:作用域僅限於中斷內部。
優先級鎖:共享內存中,低優先級的任務不允許被打斷,優先級鎖就被使用。弊端:會完全禁止任務的調度。
3.信號量(一種指向semaphore結構的指針)
SEM_EVENTSEND_ERR_NOTIFY,釋放信號量出錯返回錯誤;SEM_DELETE_SAFE模式避免擁有信號量的任務被刪除;SEM_INVERSION_SAFE避免系統出現優先級反轉現象。
SEM_ID semId;//聲明信號量
semId = semXCreate(SEM_Q_PRIORITY,SEM_EMPTY);創建信號量
1)二值信號量
速度最快,只有唯一的任務可以獲取,一個任務釋放,一個任務才能獲取
2)互斥信號量
特殊二值信號量,只有擁有信號量的任務,才能使用semGIve釋放信號量;二值信號量和計數信號量,所有的任務都能釋放信號量;二值信號量被釋放之前只能有一個任務使用semTake獲取信號量;計數信號量被釋放前可以有多個任務獲取信號量,上限是計數值;在互斥信號量中,也只有一個任務獲取信號量,但是允許同一個任務聯繫多次獲取中一個信號量,當然獲取多少次就釋放多少次;二進制信號量和計數信號量均指出semFlush操作,用於向所有等待信號量的任務釋放信號量,使他們進入就緒態,信號量本身不變,但是,互斥信號量不支持semFlush。
3)計數信號量
和二值信號量類似,但是一個信號量可以被多個任務後去知道計數的限制。
4.消息隊列
創建一個隊列,一個任務發送,一個任務接收,隊列有大小,通過創建的隊列返回的句柄來發送和接收消息。
msgQCreate創建消息隊列,屬性:先進先出MSG_Q_FIFO、消息優先級MSG_Q_PRIORITY、發送時間通知MSG_Q_EVENTSEND_ERR_NOTIFY,前兩個可以和第三個屬性組合。返回值就是隊列句柄,也就是發送和接收函數操作隊列的參數。
msgQsend向隊列中發送消息,緊急程度參數:普通消息MSG_PRI_NORMAL和緊急消息MSG_PRI_URGENT。緊急就是將消息放到前端。
接收使用WAIT_FOREVER作爲超時參數,則消息隊列引起任務阻塞,知道隊列中有消息。
5.管道
支持select機制可以用於異步通信、支持全雙工
status = pipeDevCreate("/pipe/pipe0",Max_MsgNo,Max_MsgLen);
通過,open(),read(),write(),ioctl()來訪問管道。
6.socket
和Linux類似,之前已總結過
7.信號