LINUX C 執行緒總結 一

2021-08-04 23:50:35 字數 1203 閱讀 9071

首先來說說我所理解的執行緒:

但是談執行緒又不得不得提一下程序,程式,這三者的聯絡

或許弄清楚這三種的聯絡之後,我們或許能夠更好的來對這些系統級的實體有乙個更加深刻的認知。

程式,程序,執行緒這三者之間的關係?

i.首先, 就是執行緒建立函式

c

這函式比較坑的一點就是實際用到的時候他的第2,4,項引數是null,那麼問題來了,我想給新開執行緒從此函式傳參怎麼辦,答案是第四項是引數,傳入他的指標。別在第三項**傳。傳的時候務必注意指標型別問題,先強轉再傳,就不會產生警告,後轉會產生,這是因為指標位元組與你所要轉的大小不同,位址資源浪不匹配。

就是( 指標函式與函式指標的簡單區別):

指標函式:int

*f(int a, int b);

函式指標:int (*f)(int a, int b);

>ii執行緒的屬性超級多 他被包含在乙個結構體裡邊, 有時候建立執行緒的時候也會用到

typedef struct

pthread_attr_t;

>iii.執行緒終止問題,那種好一些

執行緒有好幾種退出方式,1.

return 返回

2. #使用pthread_exit()函式:

有兩種特殊情況要注意,

>1 主線程中,如果從main 函式中返回或者呼叫了exit函式退出主線程, 則整個程序也會終止,程序實則是主線程, 則整個程序就會終止。

>2 是主線程呼叫pthread_exit 函式 ,則僅僅是主線程消亡,程序不會結束,程序內的其他執行緒也不會終止,直到所有執行緒結束,程序才會結束。

》主要是退出函式的選擇問題 ,具體用到的時候要特別注意。

3. #執行緒的資源釋放問題

> 執行緒不會主動釋放資源,所以系統提供了兩個函式

````

``class="se-preview-section-delimiter">

#include 1.

void pthread_cleanup_push(void (*routine)(void *), void *arg);

2.void pthread_cleanup_pop(int execute);

這在系統中是乙個以巨集的形式給出的所以必須成對出現

linux C執行緒雜記

以前學作業系統的程序和執行緒管理時,經常聽到互斥加鎖解鎖之類的概念,但是幾乎很少在程式設計中用到,今天看 gnu linux程式設計 的執行緒這章時,對c程式中如何給變數加鎖解鎖有了乙個大致的了解,現記錄如下 互斥其實是保證執行緒在關鍵區正常執行的變數,同一時刻只能由某一程序訪問,要建立乙個關鍵區,...

Linux c 執行緒入門

include include include include include void print msg1 void void print msg2 void void thread create pthread t thread 2 int main void print msg1 int f...

Linux C程序 執行緒

1 程序間通訊 庫 在使用者空間是不可能實現程序通訊,可通過linux核心建立物件來通訊 pid t pid 程序號的型別定義 pid fork 建立程序 if pid 0 子程序 if pid 1 父程序 2 執行緒間通訊 庫 在使用者空間可以實現執行緒間通訊,通過全域性變數通訊 pthread ...