zebra執行緒管理原始碼簡析(二)

2021-07-03 03:02:53 字數 2412 閱讀 9472

下面給出了

zebra

關於執行緒管理的相關函式的簡要功能介紹。

為建立乙個新的

thread_master

結構體動態開闢一塊記憶體空間。

在list

雙向鍊錶尾部插入乙個新的

thread

。在函式引數

point

所指向的

thread

前面插入乙個新的

thread

。刪除引數中指定的

thread

。向指定

thead_master

中的unused

鍊錶尾部插入新

thread

。從記憶體中釋放掉指定

thread_master

中的指定

thread

鍊錶所佔空間。

徹底釋放指定

thread_master

所佔記憶體空間。

若指定thread

鍊錶中非空,刪除該煉表頭指標所指

thread

,並將其返回,即從執行緒佇列中取出乙個執行緒。

判斷指定

thread

鍊錶是否為空。

得到指定執行緒的剩餘時間。

若指定thread_master

中的unuse

鍊錶非空,從該佇列中取出乙個

thread

,根據引數初始化並返回之。否則,給該

thread_master

多開闢一塊空間給新的

thread

,根據引數初始化該

thread

並返回之。

根據所給引數在指定

thread_master

中新增並初始化乙個

read

型別的thread

並返回之。

根據所給引數在指定

thread_master

中新增並初始化乙個

write

型別的thread

並返回之。

根據所給引數在指定

thread_master

中新增並初始化乙個

timer

型別的thread

。若timer

鍊錶不要求排序,則直接返回新

thread

,若要求排序,則將新

thread

插入到佇列的相應位置後再返回之。

根據所給引數在指定

thread_master

中新增並初始化乙個

event

型別的thread

並返回之。

刪除指定

thread

,刪除後將其型別置為

thread_unused

,並將其插入到該

thread_master

的unuse

鍊錶中。

將指定thread_master

的event

鍊錶中與引數中

arg相匹配的

thread

刪除。找出指定

thread_master

的timer

鍊錶中最小的剩餘時間並將其返回。

將指定thread

的值賦給

thread

型別的fetch

,然後將其型別置為

thread_unused

,並將其插入

unuse

鍊錶,返回

fetch

。將指定

thread

鍊錶中的元素取出插入到該

thread_master

的ready

鍊錶中,返回該鍊錶中插入元素的個數。

若指定thread_master

的event

佇列非空取出其頭元素並用

run函式處理。取出並用

run函式處理

timer

佇列中每乙個之前建立的執行緒。若指定

thread_master

的ready

佇列非空取出其頭元素並用

run函式處理。拷貝該

thread_master

的檔案描述符。將

read

和write

鍊錶插到

ready

鍊錶中,再從

ready

鍊錶取頭元素用

run函式處理。如此無限迴圈下去直到所有程序都處理完。

得到該程序所耗費的時間。

執行該thread

中的功能函式,如果該

thread

持續時間超過

cpu規定的獨佔時間,發出警告。

根據引數建立乙個

event

型別的thread

並用thread_call()

函式對其進行處理。

zebra執行緒管理原始碼簡析

zebra這個軟體包整體結構大致可分為兩大塊 協議模組和守護程序模組。協議模組實現各協議的功能,各協議以子模組的形式載入到zebra中 守護程序模組的功能主要是管理各協議的信令傳輸 表項操作 系統操作呼叫等事務,為各協議提供底層資訊以及相關的硬體處理等功能支援。zebra與各協議的互動採用的是c s...

Spring Boot原始碼簡析 二

load 資源過程load context,sources.toarray new object sources.size load主要就是把我們傳入的資源生成相應的beandefinition。protected void 建立乙個beandefinitionloader,看名字就知道使用來載入b...

Sample BSP原始碼簡析

ifndef bsp h define bsp h include sdksample.h include filesystemlayer.h filesystemlayer.h 用來處理檔案系統的目錄 路徑等資訊 後面的mfslayer getconfigfilepath就是用了該檔案中定義的類。...