linux中線程的基本相關知識

2021-08-03 13:19:57 字數 819 閱讀 2828

在大型的工程中,使用執行緒並行處理資料能夠明顯加快執行處理速度,新增乙個執行緒主要有以下幾個步驟:

(1)、建立執行緒,pthread_create;

(2)、初始化互斥鎖,pthread_mutex_init;

(3)、申請互斥鎖,pthread_mutex_lock;

(4)、釋放互斥鎖,pthread_mutex_unlock;

(5)、等待執行緒結束,pthread_join;

(6)、執行緒退出,pthread_exit;

一般建立的副執行緒裡面的引數需要從主線程中傳入,引數的傳遞過程主要做法為:在主線程中定義乙個關於副執行緒的結構體,裡面定義各種副執行緒需要用到的引數以及相關的結構體,然後在主線程中將引數傳入到結構體中,最後在建立執行緒的時候將定義的結構體一併傳入到副執行緒中,因此相關的引數也就傳遞到了副執行緒中,一般來說,類的傳遞,陣列的傳遞都需要指標傳遞。

執行緒中的互斥鎖,一般是為了提供對共享資源的訪問保護,即在同一時間段內,共享資源只有乙個執行緒就可以訪問。

鎖的初始化主要分為靜態與動態兩種情況:

(1)、對於靜態分配的互斥量,可以設定為pthread_mutex_initializer,或者是pyhtead_mutex_init;

(2)、對於動態分配的互斥量,在申請記憶體後(malloc),通過pthread_mutex_init進行初始化,在釋放記憶體錢(free)需要使用pthread_mutex_destroy;

返回值:成功則返回0,錯誤返回錯誤編號。

在主線程中加上等待執行緒結束這一句後,主線程這句後面的程式會等到執行緒結束後處理,如果在副執行緒中加上執行緒退出後,程式會跳轉到等待執行緒結束這行程式,然後繼續後面的程式操作。

linux中線程相關函式

linux中線程相關函式 2010年03月09日 星期二 22 18 1.比較兩個執行緒 id 是否一致。執行緒id 使用 pthread t 資料型別來表示。linux 使用 unsigned long int 表示pthread t 資料型別。solaris 9 把 pthread t 資料型別...

java中線程的知識04

執行緒同步其實就是兩個問題 執行緒間共享資料的問題。執行緒同步的實現機制。首先明白,為什麼要執行緒同步 多執行緒併發執行訪問同一資料時,容易發生資料狀態不定,所以我們需要執行緒同步。demo 如下,我們建立乙個共享的data資料,理想情況下,我們希望變數 i 的值交替輸出 可是結果卻不是我們所想要的...

Linux中線程與程序的區別

自 linux有兩種不同的函式來建立程序 fork函式,vfork函式。兩個函式都是從父程序拷貝出乙個新程序,但是也有區別。下面是fork和vfork的定義。定義於中。本段 源於kernel 4.4版本。fork系統呼叫 syscall define0 fork syscall define0 vf...