1、多執行緒方面
1)pthread_create()建立的執行緒預設情況下是非分離狀態的執行緒,如果修改執行緒的狀態屬性,需要使用pthread_attr_getdatachstate()和pthread_attr_setdatachstate()來修改執行緒的屬性。pthred_create_detached為分離狀態,pthread_create_johnable是非分離狀態。
2)pthread_john()僅適用於非分離狀態的目標執行緒,其作用是等待執行緒退出,以便釋放執行緒的資源。如果沒有必要等待特定執行緒終止之後進行其他處理,則可以把執行緒設定為分離狀態。
3)pthread_exit()和pthread_john()的幾點說明
a、執行緒自己執行結束,或者呼叫pthread_exit結束,執行緒都會釋放自己獨有的空間資源。
b、如果執行緒是非分離的,則執行緒會保留執行緒的id號,直到其他執行緒通過"johning"這個執行緒確認已經死亡。
c、如果執行緒是分離的,不需要pthread_exit,執行緒會自己執行結束,並且釋放所有的資源(包括id號)。
d、子執行緒最終一定要用pthread_john()或者設定為分離狀態結束執行緒,否則執行緒的資源不會完全釋放。
e、主線程執行pthread_exit()會結束主線程,但是對子執行緒沒有影響。
f、主線程結束則整個程式結束,所以最好在主線程中使用pthread_john()來等待各子執行緒執行結束,使用john乙個執行緒可以等待多個執行緒結束。
g、使用john的執行緒會阻塞,知道john的執行緒結束,john函式返回,但是它對被john的執行緒沒有影響。
h、如果子執行緒使用exit()則整個程序結束。
4)執行緒的同步 ------互斥鎖和條件變數
a)兩種初始化方式:
靜態初始化:pthread_mutex_t mutex= pthread_mutex_initializer
pthread_cond_t cond=pthread_cond_initializer
動態初始化:
pthread_mutex_init(&mutex,null);
pthread_cond_init(&cond,null);
b)聯合使用實現執行緒的嚴格同步
//執行緒1**
pthread_mutex_lock(&mutex);
if(條件成立)
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
//執行緒2**
pthread_mutex_lock(&mutex);
while(條件成立)
pthread_cond_wait(&cond,&mutex);
pthread_mutex_lock(&mutex);
其中,pthread_cond_wait()可以看做解鎖執行緒鎖,等待條件為ture,加鎖執行緒鎖等幾個動作的合體。
5)多執行緒
每個執行緒獨有的:乙個指向當前被執行指令的指令指標,乙個棧,乙個暫存器的集合,乙個私有的資料區。
高質量嵌入式Linux c程式設計第三章精簡問題
第三章 運算子,表示式 列舉c語言中的各類運算子 答 1 算術運算子 關係運算子 邏輯運算子 位操作運算子 賦值運算子 簡單賦值 符合算術賦值 復合位運算賦值 條件運算子 求位元組數運算子 sizeof 特殊運算子 簡要說明運算子的優先順序的問題 答 同一優先順序的運算子,運算次序由結合方向所決定。...
嵌入式Linux C程式設計
一 前言 一切,都想從不一樣做起。大學,原以為會和我當時高中想象的那樣,可以談場轟轟烈烈的戀愛,可以自由自在的旅行,可以忘乎所以,盡己之所興。如今,大三結束。驀然回首,卻發現自己浪費了那麼多改變自己的機會。如今,大學只剩最後一年,我要用這最後的時間去彌補曾經所浪費的一切,從現在開始,朝著自己的目標勇...
高質量程式設計 筆記
1.高質量軟體開發之道 1.提高軟體質量的基本方法 2.軟體質量屬性 3.質量 生成率和成本 4.軟體過程改進 5.高質量軟體開發的基本方法 2.程式的基本概念 1.程式語言 一套規範的集合,主要包括語言使用字符集 資料型別集合 運算子集合 關鍵字集合 指令集合 語法規則 對特定構造的支援 函式 繼...