歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux C之多線程

線程有關的函數都在頭文件#include<pthread.h>中。

一、創建線程

int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,void*(*start_rtn)(void),void *arg);

若成功則返回0,否則返回出錯編號。返回成功時,由tidp指向的內存單元被設置為新創建線程的線程ID。attr參數用於指定各種不同的線程屬性。新創建的線程從start_rtn函數的地址開始運行,該函數只有一個萬能指針參數arg,如果需要向start_rtn函數傳遞的參數不止一個,那麼需要把這些參數放到一個結構中,然後把這個結構的地址作為arg的參數傳入。

二、終止線程

1)void pthread_exit(void *retval);

此函數一般在線程中調用,用於退出線程,類似於exit。只不過exit是退出進程,當然也退出了該進程。參數為傳出,可用pthread_join獲得該參數。

2)進程執行完後,return

3)被另一個進程終止。

三、等待線程

int pthread_join(pthread_t tidp,void **retval);

tid為欲等待的線程id,即創建線程時的tidp。retval參數為接收線程結束時的返回值。

四、清除函數

pthread_cleanup_push(void(*func)(void*),void *arg);

代碼.....

.....

pthread_cleanup_pop(0或1);

清除函數為呼應使用,所包圍的代碼即為所保護的代碼。如果保護代碼中出現異常終止或使用pthread_exit都將執行函數指針func所指函數。其中arg為處理函數func的參數。

pthread_cleanup_pop中的0表示保護代碼執行完後,不執行處理函數func,1相反。

Copyright © Linux教程網 All Rights Reserved