在大型的工程中,使用執行緒並行處理資料能夠明顯加快執行處理速度,新增乙個執行緒主要有以下幾個步驟:
(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...