1. 程式人生 > >linux多執行緒學習(二)——執行緒的建立和退出

linux多執行緒學習(二)——執行緒的建立和退出

      在上一篇文章中對執行緒進行了簡單的概述,它在系統中和程式設計的應用中,扮演的角色是不言而喻的。學習它、掌握它、吃透它是作為一個程式設計師的必須作為。在接下來的講述中,所有執行緒的操作都是使用者級的操作。在LINUX中,一般pthread執行緒庫是一套通用的執行緒庫,是由POSIX提出的,因此他的移植性是非常好的。

      建立執行緒實際上就是確定呼叫該執行緒函式的入口點,這裡通常使用的函式是pthread_create。線上程建立之後,就開始執行相關的執行緒函式。在該函式執行結束,執行緒也會隨著退出。這是其中退出執行緒的一種方法,另外一種退出執行緒的方法就是呼叫pthread_exit()函式介面,這是結束函式的主動行為。在這裡要注意的是,在使用執行緒函式時,不要輕易呼叫exit()函式,因為這樣會使整個程序退出,往往一個程序包含著多個執行緒,所以呼叫了exit()之後,所有該程序中的執行緒都會被結束掉。因此,線上程中,利用pthread_exit來替代程序中的exit。

      由於一個程序中的資料段是共享的,因此通常線上程退出之後,退出執行緒所佔的資源並不會隨著執行緒的結束而得到釋放。正如程序之間可以呼叫wait()函式來同步中指並釋放資源一樣,執行緒之間也有類似的機制,那就是pthread_join函式.pthread_join可以將當前執行緒掛起,等待執行緒的結束,這個函式是一個阻塞函式,呼叫它的函式將一直等待到被等待的執行緒結束為止,當函式返回時,被等待函式的資源就會被釋放。

1、函式語法簡述。

pthread_create

標頭檔案:       pthread.h

函式原型:    int pthread_create (pthread_t* thread, pthread_attr_t* attr,

                                                  void* (start_routine)(void*), void* arg);

函式傳入值: thread: 執行緒識別符號

                   attr: 執行緒屬性設定

                   start_routine:執行緒函式入口

                   arg:傳遞給執行緒函式的引數

返回值:       0: 成功

                   -1: 失敗 

pthread_exit

標頭檔案:      pthread.h

函式原型:   void pthread_exit (void*  retval);

函式傳入值:retval:pthread_exit()呼叫者執行緒的返回值,可又其他函式如pthread_join來檢索獲取。

phread_join

標頭檔案:      pthread.h

函式原型:   int pthread_join (pthread_t* thread, void** thread_return);

函式傳入值:thread:等待執行緒的識別符號。

                  thread_return:使用者定義的指標,用來儲存被等待執行緒的返回值(不為NULL值);

函式返回值:成功: 0

                  失敗:-1

2、函式舉例實現。

在上面的例子中只是簡單的建立了執行緒、主動退出執行緒和掛起執行緒。在下一篇文章中,將講述執行緒線的屬性及其設定。

~~END~~