linux創(chuàng)建線程之pthread_create的具體使用
pthread_create函數
函數簡介
pthread_create是UNIX環(huán)境創(chuàng)建線程函數
頭文件
#include<pthread.h>
函數聲明
int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);
返回值
若成功則返回0,否則返回出錯編號
參數
第一個參數為指向線程標識符的指針。
第二個參數用來設置線程屬性。
第三個參數是線程運行函數的地址。
最后一個參數是運行函數的參數。
注意
在編譯時注意加上-lpthread參數,以調用靜態(tài)鏈接庫。因為pthread并非Linux系統(tǒng)的默認庫。
pthread_join函數
函數簡介
函數pthread_join用來等待一個線程的結束。
函數原型為:
extern int pthread_join __P (pthread_t __th, void **__thread_return);
參數:
第一個參數為被等待的線程標識符
第二個參數為一個用戶定義的指針,它可以用來存儲被等待線程的返回值。
注意
這個函數是一個線程阻塞的函數,調用它的函數將一直等待到被等待的線程結束為止,當函數返回時,被等待線程的資源被收回。如果執(zhí)行成功,將返回0,如果失敗則返回一個錯誤號。
例子:
#include<stdio.h> #include<stdlib.h> #include<pthread.h> /* 聲明結構體 */ struct member { int num; char *name; }; /* 定義線程pthread */ static void * pthread(void *arg) { struct member *temp; /* 線程pthread開始運行 */ printf("pthread start!\n"); /* 令主線程繼續(xù)執(zhí)行 */ sleep(2); /* 打印傳入參數 */ temp = (struct member *)arg; printf("member->num:%d\n",temp->num); printf("member->name:%s\n",temp->name); return NULL; } /* main函數 */ int main(int agrc,char* argv[]) { pthread_t tidp; struct member *b; /* 為結構體變量b賦值 */ b = (struct member *)malloc(sizeof(struct member)); b->num=1; b->name="mlq"; /* 創(chuàng)建線程pthread */ if ((pthread_create(&tidp, NULL, pthread, (void*)b)) == -1) { printf("create error!\n"); return 1; } /* 令線程pthread先運行 */ sleep(1); /* 線程pthread睡眠2s,此時main可以先執(zhí)行 */ printf("mian continue!\n"); /* 等待線程pthread釋放 */ if (pthread_join(tidp, NULL)) { printf("thread is not exit...\n"); return -2; } return 0; }
編譯與執(zhí)行結果
編譯與執(zhí)行結果如下圖所示,可以看到主線程main和線程pthread交替執(zhí)行。也就是說是當我們創(chuàng)建了線程pthread之后,兩個線程都在執(zhí)行,證明創(chuàng)建成功。另外,可以看到創(chuàng)建線程pthread時候,傳入的參數被正確打印。
到此這篇關于linux創(chuàng)建線程之pthread_create的具體使用的文章就介紹到這了,更多相關linux pthread_create內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Centos搭建PHP5.3.8+Nginx1.0.9+Mysql5.5.17詳細配置
算不上經驗,只能說是個人總結.在搭建過程中遇到的問題.并記錄下來.剛開學習始搭建環(huán)境的朋友少走一些彎路.這沒有過多的參數,并不是什么高性能網站的部署.本人經驗有限,在此分享一些遇到的問題.2012-06-06centos 6.5下修改SSH端口及禁用root遠程登錄的方法
Linux各發(fā)行版中SSH端口默認為22,如果正式做站或其它用途,為了提高安全性就需要修改掉默認的SSH端口號,防止被有心人窮舉密碼。這篇文章主要給大家介紹了在centos 6.5系統(tǒng)下修改SSH端口及禁用root遠程登錄的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02CentOS 7.0服務器安裝配置LAMP服務器(Apache+PHP+MariaDB)
這篇文章主要介紹了CentOS 7.0服務器安裝配置LAMP服務器(Apache+PHP+MariaDB),需要的朋友可以參考下2016-10-10Linux+php+apache+oracle環(huán)境搭建之CentOS下源碼編譯安裝PHP
環(huán)境搭建過程中,編譯安裝PHP最艱辛。需要安裝的依賴組件太多?,F在整理記錄一下。也希望對讀者能有所幫助2014-08-08