高質量嵌入式Linux C程式設計學習摘要

2021-08-07 10:25:13 字數 1495 閱讀 8805

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.程式語言 一套規範的集合,主要包括語言使用字符集 資料型別集合 運算子集合 關鍵字集合 指令集合 語法規則 對特定構造的支援 函式 繼...