1、進(jìn)程與線程
這是個(gè)老生常談的話題,我們只需要記住:
進(jìn)程可是一個(gè)資源的基本單位,而線程是程序調(diào)度的基本單位,一個(gè)進(jìn)程內(nèi)部的線程之間共享進(jìn)程獲得的時(shí)間片。線程擁有自己的棧,因?yàn)榫€程有自己的局部變量,其他的資源(文件描述字,全局變量等)和其他線程共享。
2、有關(guān)線程的函數(shù)
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
參數(shù)說明:
thread:指向pthread_create類型的指針,用于引用新創(chuàng)建的線程。
attr:用于設(shè)置線程的屬性,一般不需要特殊的屬性,所以可以簡(jiǎn)單地設(shè)置為NULL。
*(*start_routine)(void *):傳遞新線程所要執(zhí)行的函數(shù)地址。
arg:新線程所要執(zhí)行的函數(shù)的參數(shù)。
調(diào)用如果成功,則返回值是0,如果失敗則返回錯(cuò)誤代碼。
void pthread_exit(void *retval);
參數(shù)說明:
retval:返回指針,指向線程向要返回的某個(gè)對(duì)象。
線程通過調(diào)用pthread_exit函數(shù)終止執(zhí)行,并返回一個(gè)指向某對(duì)象的指針。不能指向局部變量…… 如下栗子:

void threadFunc( char * arg){ char result = ' d ' ; printf( " %s\n " , arg); pthread_exit( & result); } int main(){ pthread_t t1; void * res; int s; s = pthread_create(&t1, NULL, ( void *)threadFunc, ( void *) " hello world " ); if (s != 0 ) printf( " create failed\n " ); s = pthread_join(t1, & res); if (s != 0 ) printf( " join failed\n " ); printf( " thread return %c " ,*(( char * )res)); return 0 ; }
?
int pthread_join(pthread_t thread, void ** retval);
參數(shù)說明:
thread: 線程標(biāo)識(shí)符,即線程ID,標(biāo)識(shí)唯一線程。
retval: 用戶定義的指針,用來存儲(chǔ)被等待線程的返回值。
來源百度百科:代碼中如果沒有 pthread_join 主線程會(huì)很快結(jié)束從而使整個(gè)進(jìn)程結(jié)束,從而使創(chuàng)建的線程沒有機(jī)會(huì)開始執(zhí)行就結(jié)束了。加入 pthread_join 后,主線程會(huì)一直等待直到等待的線程結(jié)束自己才結(jié)束,使創(chuàng)建的線程有機(jī)會(huì)執(zhí)行。 所有線程都有一個(gè)線程號(hào),也就是 Thread ID 。其類型為 pthread_t 。通過調(diào)用 pthread_self() 函數(shù)可以獲得自身的線程號(hào)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
