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

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);
參數說明:
thread: 線程標識符,即線程ID,標識唯一線程。
retval: 用戶定義的指針,用來存儲被等待線程的返回值。
來源百度百科:代碼中如果沒有 pthread_join 主線程會很快結束從而使整個進程結束,從而使創建的線程沒有機會開始執行就結束了。加入 pthread_join 后,主線程會一直等待直到等待的線程結束自己才結束,使創建的線程有機會執行。 所有線程都有一個線程號,也就是 Thread ID 。其類型為 pthread_t 。通過調用 pthread_self() 函數可以獲得自身的線程號。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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