首先,我們先來談談怎樣建立和關閉執行緒。(關於執行緒的作用和意義這裡不再贅訴)
程序的建立一般由fork( )函式來完成,而執行緒的建立函式是 pthread_create( )函式完成
pthread_create( )函式的宣告如下:
int pthread_create(pthread_t*thread , const pthread_attr_t *attr , void*(*start_routime) (void *) , void *arg);
thread ---指向執行緒識別符號的指標
attr ---- 設定執行緒屬性 (設定為null則生成預設屬性的執行緒)
start_routime ---指向執行緒呼叫函式
arg ----執行緒執行函式的引數 (如果呼叫函式不需要引數則可設為null)
執行緒的建立比較單一,但是結束有多種方式:比如執行函式結束執行緒 比如同一程序下的其他執行緒結束等
執行函式結束執行緒可使用 pthread_exit( )
宣告如下:
void pthread_exit(void *rval_ptr); rval_ptr ----為函式的返回**,相當於執行緒的退出碼
同一程序下的其他執行緒結束可使用 pthread_cancel ( )
宣告如下;
int pthread_cancel(pthread_tid); tid ----為執行緒識別符號
還有乙個與執行緒終止相關的函式 pthread_join( )
宣告如下:
int pthread_join( pthread_t pthread , void **return_ptr ) pthread---執行緒識別符號 return_ptr --- 指向結束執行緒的返回值的二級指標
下面的例子是建立乙個執行緒並呼叫函式顯示系統當前的日期及時間
#include
#include
#include
#include
#include
void *print_currenttime(void); //宣告函式
int main()
printf("waiting for new thread...\n");
ret = pthread_join(new_thread,&thread_result);//(結束執行緒)在主線程中阻塞等待執行緒標示符是thread的執行緒結束
if(ret != 0) //不等0則表示 pthread_join 失敗
printf("thread joined,returned:%s\n",(char *)thread_result);
return 0;
}void *print_currenttime(void)
編譯時記得鏈結pthread庫 哦。。命令如下
gcc -pthread 檔名 -o 目標檔名
Linux 執行緒的應用
子執行緒與父執行緒的簡單使用 以及通過乙個結構體達到傳值的效果 include include include include include typedef struct exit t 返回值為乙個結構體 void ftn void arg if s 1 s 3 if s 3 printf i a...
多執行緒的簡單應用
前一陣兒用python寫了乙個抓取某 的指令碼,打包成了帶有gui的可執行程式,介面沒有怎麼設計只是有兩個按鈕,分別抓取兩類,並將抓取的放到當前目錄的上一資料夾。gui是用python自帶的庫tkinter,下面是效果圖 只有當抓取完成後圖形介面才會回到正常狀態。從網上查了一下,發現這是因為將邏輯處...
多執行緒的簡單應用
全域性併發佇列 新增touch事件顯示 void touchesbegan nsset touches withevent uievent event dispatch async dispatch get global queue dispatch queue priority default,0...