執行緒建立函式pthread create

2021-07-10 11:46:08 字數 1390 閱讀 1132

標頭檔案:#include b函式原型:int  pthread_created(pthread_t *thread,pthread_attr_t *attr,void * (*start_routine)(void *),void *arg); 函式引數含義: thread:該引數是乙個指標,當執行緒建立成功時,用來返回建立的執行緒的id. attr:該引數用於指定執行緒的屬性,null表示預設屬性. start_routine:該引數為乙個函式指標,指向執行緒建立後要呼叫的函式; arg:該引數指向傳遞給執行緒函式的引數. 執行緒建立成功時,pthread_create函式返回0,若不為0,則說明建立執行緒失敗,常見的錯誤碼為eagain,和einval,前者表示系統限制建立新的執行緒.後者表示第2引數代表的執行緒屬性值非法,執行緒建立成功後,新建立的執行緒開始執行第3個引數所指的函式,原來的執行緒繼續執行. pthread_create函式的第2個引數attr是乙個指向pthread_attr_t結構體的指標,該結構體指明待建立的執行緒的屬性.看個例子:

#include #include #include #include #include int  *thread(void *arg)

int main(void)

sleep(1);

exit(0);

}

結果:

yang@liu:~/syc/第八章$ ./createthread 

主線程的id is 2025752320

這是新的執行緒 id = 2017445632

建立執行緒的其它系統函式:

pthread_t pthread_self(void)              獲取本執行緒的執行緒 id; pthread_equal(pthread_t thread,pthread_t thread2)     判斷兩個執行緒id是否指向同乙個執行緒. int pthread_once(pthread_once_t *once_control,void (*init_routinue)(void))     用來保證init_routinue執行緒函式在程序中僅執行一次.看個例子:

#include #include #include pthread_once_t once=pthread_once_init;

void run()

void *thread1()

void *thread2()

int main()

結果:

yang@liu:~/syc/第八章$ ./createthread 

當前的執行緒id = 2849777408

我是功能函式,我正在執行,id = 2849777408

thread2結束!

當前的執行緒id = 2858170112

thread1結束!

主線程結束!

CreateThread函式 建立執行緒

微軟在windows api中提供了建立新的執行緒的函式createthread,概述 當使用createprocess呼叫時,系統將建立乙個程序和乙個主線程。createthread將在主線程的基礎上建立乙個新執行緒,大致做如下步驟 1在核心物件中分配乙個執行緒標識 控制代碼,可供管理,由crea...

執行緒函式(建立 取消 等待)

1.建立執行緒 建立執行緒的函式定義如下 include int pthread create pthread t restrict thread const pthread attr t restrict attr,void start routine void void restrict arg...

執行緒 建立執行緒

重寫run public void run 例項化物件 類名 t new 類名 設定屬性 名字,優先順序 優先順序是1 10的整數,1最小,預設是5 優先順序越高,該執行緒占用cpu的時間 機會 越多。id是自動生成 t.setname 執行緒1 t.setpriority 4 啟動執行緒,預設呼叫...