執行緒的概念早在上世紀60年代就被提出,知道上世紀80中期才被真正使用起來。solaris是執行緒使用的先驅,在傳統的unix系統中,乙個執行緒就對應乙個程序,多執行緒類似於多程序,執行緒的左右沒有得到很好地發揮。現在多執行緒技術已經得到廣泛的使用,與多程序相比,它具有的有點主要有:
該函式負責建立出乙個新的執行緒,當pthread_create()函式呼叫時,傳入的引數有執行緒屬性、執行緒函式、執行緒函式變數,用於生成乙個某種特性的執行緒來執行執行緒函式。其函式原型為:
int pthread_create(pthread_t *thread, //執行緒識別符號
pthread_attr_t *attr, //執行緒屬性,一般情況下置null
void *(*start_routine)(void *), //函式指標
void *arg); //執行緒間傳遞引數
pthread_join()函式用來等待乙個執行緒的結束,這個函式是阻塞函式,一直到被等待的執行緒結束為止,函式才返回並且收回被等待執行緒的資源。函式原型:
extern
int pthread_join __p((pthread_t __th, void ** __thread_return));
執行緒函式的結束方式有兩種。
執行緒函式執行完畢,自行結束,不返回結果。
通過pthread_exit()函式退出,傳出返回結果。
#include
#include
#include
static int run = 1;
static int retval;
void *thread_func(void* arg)
printf("exit sub thread.\n");
retval = 8;
pthread_exit( (void *) &retval); //exit the sub thread & capture the return val
}int main()
for(int i = 0; i < times; i++)
run = 0; // to stop sub thread
int *ret_join;
pthread_join(pt, (void**)&ret_join);
printf("sub thread return value is: %d\n", *ret_join);
return
0;}
編譯:」c++ thread_test.cc -o thread_test -lpthread」 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 乙個堆疊 乙個...