1、添加線程相關(guān)的頭文件:#includepthread.h

為班瑪?shù)鹊貐^(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及班瑪網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、班瑪網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
2、線程創(chuàng)建函數(shù)是pthread_create()函數(shù),該函數(shù)的原型為:
int?pthread_create(pthread_t?*thread,pthread_attr_t?*attr,void*?(*start_routine)(void*),void?*arg);
3、線程退出函數(shù)是pthread_exit()函數(shù),該函數(shù)的原型為:
void?pthread_exit(void?*retval);
創(chuàng)建線程的示例程序如下:
/*
**程序說(shuō)明:創(chuàng)建線程函數(shù)pthread_create()函數(shù)的使用。
*/
#include?stdio.h
#include?pthread.h
#include?unistd.h
#include?stdlib.h
#include?string.h
//打印標(biāo)識(shí)符的函數(shù)
void?print_ids(const?char?*str)
{
pid_t?pid; //進(jìn)程標(biāo)識(shí)符
pthread_t?tid; //線程標(biāo)識(shí)符
pid=getpid(); //獲得進(jìn)程號(hào)
tid=pthread_self(); //獲得線程號(hào)
printf("%s?pid:%u?tid:%u?(0x%x)\n",
str,(unsigned?int)pid,(unsigned?int)tid,(unsigned?int)tid);?//打印進(jìn)程號(hào)和線程號(hào)
}
//線程函數(shù)
void*?pthread_func(void?*arg)
{
print_ids("new?thread:"); //打印新建線程號(hào)
return?((void*)0);
}
//主函數(shù)
int?main()
{
int?err;
pthread_t?ntid; //線程號(hào)
err=pthread_create(ntid,NULL,pthread_func,NULL); //創(chuàng)建一個(gè)線程
if(err?!=?0)
{
printf("create?thread?failed:%s\n",strerror(err));
exit(-1);
}
print_ids("main?thread:"); //打印主線程號(hào)
sleep(2);
return?0;
}
·線程創(chuàng)建
函數(shù)原型:int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);
返回值:若是成功建立線程返回0,否則返回錯(cuò)誤的編號(hào)。
形式參數(shù):pthread_t *restrict tidp要?jiǎng)?chuàng)建的線程的線程id指針;
const pthread_attr_t *restrict attr創(chuàng)建線程時(shí)的線程屬性;
void* (start_rtn)(void)返回值是void類型的指針函數(shù);
void *restrict arg start_rtn的形參。 =====這個(gè)地方就可以傳參數(shù),
注意,這個(gè)地方是個(gè)指針,要想傳多個(gè)參數(shù),可以定義一個(gè)結(jié)構(gòu)體,把要傳的參數(shù)包起來(lái),傳結(jié)構(gòu)體的地址就ok
通常使用CreateThread函數(shù)來(lái)創(chuàng)建新的線程.(Unix下使用pthread_create函數(shù))
首先指出,線程與線程之間,是并列關(guān)系,不會(huì)存在"父子線程"的概念.
在Windows平臺(tái)下,CreateThread函數(shù)包含在 Windows.h 文件內(nèi),包含此文件即可正常使用.
以下為CreateThread函數(shù)的聲明:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,//指向安全性屬性描述結(jié)構(gòu)體的
//指針,通常可以忽略的.
SIZE_T dwStackSize,//指定新線程初始的棧大小,若不關(guān)心,可以用0填充,來(lái)要求使用
//默認(rèn)值
LPTHREAD_START_ROUTINE lpStartAddress,//用來(lái)充當(dāng)線程的函數(shù)的指針.
LPVOID lpParameter,//要傳遞給函數(shù)的參數(shù),這個(gè)值本身就是那個(gè)參數(shù),而不是參數(shù)的地址
DWORD dwCreationFlags,//創(chuàng)建的方式,0表示正常,創(chuàng)建后立即開(kāi)始運(yùn)行
LPDWORD lpThreadId//用來(lái)接受函數(shù)反饋的線程ID的指針.
);
用來(lái)充當(dāng)新的線程的函數(shù)格式:
DWORD WINAPI ThreadProc(LPVOID);
CreateThread函數(shù)若成功了,返回新線程的句柄,若失敗了,則返回NULL.
若用CREATE_SUSPENDED填充dwCreation Flags則創(chuàng)建的線程先掛起來(lái),并不直接開(kāi)始運(yùn)行,要用ResumeThread函數(shù)恢復(fù)線程,才能繼續(xù)運(yùn)行.
新聞名稱:線程函數(shù)c語(yǔ)言 c語(yǔ)言線程使用
文章路徑:http://chinadenli.net/article46/hghehg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、品牌網(wǎng)站制作、虛擬主機(jī)、ChatGPT、服務(wù)器托管、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)