FANS RT 任務同步物件設計方案

2021-07-04 03:33:46 字數 1334 閱讀 2582

一、特性流程及涉及模組框圖

二、特性總體需求

1.建立物件

建立事件物件

建立互斥體物件

建立訊號量物件

建立訊號量集物件

2.捕獲物件(通過物件名稱)

3.向物件傳送訊號

向事件物件傳送訊號

向互斥體物件傳送訊號(解鎖)

向訊號量物件傳送訊號(點燈)

向訊號量集物件傳送訊號

4.復位物件

復位事件物件

5.等待物件

等待事件/等待訊號燈/等待訊號量集

等待互斥體訊號(加鎖)

6.關閉物件(釋放物件占用的記憶體,啟用阻塞的任務並告知物件已被刪除)

三、需求分解

1.事件物件(略)

2.互斥體物件(略)

3.訊號量物件

a.ipc api

根據引數建立乙個指定名稱、已有訊號燈數量、訊號燈上限訊號量物件(ipc api)

向訊號量物件傳送指定數量的訊號(點訊號燈)

b.obj api

根據指定控制代碼等待物件訊號

根據指定的控制代碼關閉物件

c.core adapter layer

根據指定的名稱、魔數、引數包向系統請求分配乙個物件,返回物件控制代碼

根據指定的控制代碼、引數包向系統請求啟用乙個物件。

根據指定的名稱、引數包從系統中捕獲乙個物件,返回發現的物件控制代碼。

根據指定的控制代碼向系統請求釋放乙個物件,物件所占用的記憶體空間將被釋放。

根據指定的控制代碼、方法列舉值、引數包向物件管理器請求該物件的特定方法。

d.system request manager(無新需求)

e.object manager(無新需求)

f.core ipc class

根據引數包及物件頭指標計算物件大小

根據引數包及物件頭指標初始化訊號量物件

根據引數包及物件頭指標啟用訊號量物件

根據引數包及物件頭指標等待物件訊號

根據引數包及物件頭指標向訊號量物件傳送指定數量的訊號

根據物件頭指標處理訊號量釋放事宜(啟用阻塞的任務並使任務返回state_removed)

多工 同步

實現多工之間通訊的最簡便的辦法是使用共享的資料結構。雖然共享資料區簡化了任務間的通訊,但是必須保證 每個任務在處理共享資料時的排他性。以避免競爭和資料破壞。共享資源滿足互斥性的一般方法有 1.關中斷,開中斷 2.使用測試並置位指令 3.禁止做任務切換 4.利用訊號量 一.關中斷 開中斷 這估計是最簡...

任務同步四

semaphore類 訊號量非常類似於互斥,其區別是,訊號量可以同時由多個執行緒使用。訊號量是一種計數的互斥鎖定。使用訊號量可以定義允許同時訪問受旗語鎖定保護的資源的執行緒個數。如果需要限制可以訪問可用資源的執行緒數,訊號量就很有用。static void main string args task...

同步任務六

barrier類 對於同步,barrier類非常適用於其中工作有多個任務分支且以後又需要合併工作的情況。barrier類用於需要同步的參與者。啟用乙個任務時,就可以動態地新增其他參與者,例如,從父任務中建立子任務。參與者在繼續之前,可以等待所有其他參與者完成其工作。static void main ...