Linux 多執行緒程式設計

2021-06-27 06:40:10 字數 1816 閱讀 8346

這篇文章總結下 linux 中多執行緒程式設計中能用到的幾個函式,當然,需要同步操作的時候還需要加鎖的操作,這裡,沒有列舉的這麼具體,只是把最常用的函式介紹下。

在編寫多執行緒程式在編譯的時候需要加上 -lpthread,因為用到了 pthread 庫。

/**

標頭檔案:

#include 功能:

建立乙個執行緒

引數:tid : 用於返回執行緒 id

attr : 設定執行緒的屬性,如執行緒優先順序,初始棧大小等,一般使用預設值,即 null

func :執行緒執行函式,從定義中可以看出,它返回 void* 型別,引數也是 void* 型別

arg :傳遞給執行緒的引數,如果引數不止乙個,需要用結構體傳遞

返回值:

執行成功返回 0, 執行失敗返回乙個非 0 值

*/int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg);

/** 標頭檔案:

#include 功能:

等待乙個執行緒,類似於 wait4() 函式,即用於釋放執行緒所佔的資源

引數:tid :指定要等待的執行緒 id

status :用於帶回執行緒的返回值

返回值:

執行成功返回 0, 執行失敗返回乙個錯誤編碼

*/int pthread_join (pthread_t tid, void ** status);

/** 標頭檔案:

#include 功能:

用於返回當前執行緒的 id

返回值:

執行緒 id

注: typedef unsigned long int pthread_t;

*/pthread_t pthread_self (void);

/** 標頭檔案:

#include 功能:

分離執行緒,類似於把乙個程序變成後台程序,即脫離當前的控制終端,那麼,我們就不需要

呼叫 pthread_join 函式去等待這個執行緒的執行結束

引數:tid :需要分離的執行緒 id

返回值:

執行成功返回 0, 執行失敗返回乙個錯誤編碼

*/int pthread_detach (pthread_t tid);

/** 標頭檔案:

#include 功能:

注意,執行緒執行函式的最後不能寫 exit 函式,因為,這樣會使整個程序結束,當程序結束

時,由於會**整個位址空間,而執行緒是共享程序位址空間的,所以,程序內所有的執行緒

都會終止,會成為程式的乙個 bug

引數:用於帶回執行緒結束的返回值

*/void pthread_exit (void *status);

最後,給出乙個利用這些函式的例子:

#include #include #include #define thread_count		2

void dlut_print_thread_id();

void * dlut_thread_func(void *arg);

int main(int argc, char **argv, char **environ)

for (i = 0; i != thread_count; i++)

sleep(1);

return 0;

}void dlut_print_thread_id(char *s)

void * dlut_thread_func(void *arg)

Linux 多執行緒程式設計

1.建立執行緒和退出的函式原型 int pthread create pthread t thread,pthread attr t attr,void start routine void void arg pthread exit 0 其他還有很多相關的函式。2.編譯時要加上 lpthread ...

Linux多執行緒程式設計

linux 多執行緒程式設計 多執行緒支援 posix 執行緒介面,稱為 pthread,pthread create 用來建立執行緒,pthread join 等待執行緒結束,函式的原型分別如下 extern int pthread create p pthread t thread,const ...

linux 多執行緒程式設計

多執行緒的使用 典型的執行緒包括乙個執行時間系統,它可以按透明的方式來管理執行緒。通常執行緒包包括對執行緒的建立和刪除,以及對互斥和條件變數的呼叫。posix標準執行緒庫具有這些呼叫。這些包還提供執行緒的動態建立和刪除,因此,直到執行時間之前,執行緒的個數不必知道。執行緒具有乙個id 乙個堆疊 乙個...