下面給出了
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就是用了該檔案中定義的類。...