linux執行緒系列(3)執行緒建立

2021-08-01 21:48:47 字數 1119 閱讀 9490

執行緒建立函式如下:

#include

int pthread_create(pthread_t *restrict tidp, 

const pthread_attr_t *restrict attr, 

void *(*start_rtn)(void*), void *restrict arg);

返回: 成功返回0,否則返回錯誤編號 引數

tidp:執行緒識別符號指標

attr:執行緒屬性指標

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

例項**:建立兩個子執行緒

#include #include #include #include #include typedef struct

racearg;

void* th_fn(void *arg)

return (void*)0;

}int main()

; racearg t_a = ;

if((err = pthread_create(&rabbit, null, th_fn, (void*)&r_a)) != 0)

if((err = pthread_create(&turtle, null, th_fn, (void*)&t_a)) != 0)

pthread_join(rabbit, null);

pthread_join(turtle, null);

printf("control thread id: %lx\n", pthread_self());

printf("finished!\n");

return 0;

}

對於以上的**記憶體空間分配圖如下(假設g_v是乙個全域性變數):

主線程啟動的兩個子執行緒擁有自己的棧空間,子執行緒各種棧空間中的區域性變數是子執行緒私有的,外部不可訪問(子執行緒的區域性變數i,r都儲存在私有的棧中)。對於資料段和堆中的資料是主線程和兩個子執行緒共享的,因此為了安全起見,子執行緒盡量使用區域性變數,保證執行緒的變數不被其它執行緒修改。(子執行緒如果申請記憶體空間,會分配到堆空間,堆空間是共享的,這點需要注意)

linux建立執行緒 建立Linux核心執行緒

執行緒 thread 是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。乙個執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每個執行緒並行執行不同的任務。很多時候會需要在後台執行一些任務,比如做乙個需要實時監控某個模組狀態的debug功能,這種任...

Linux多執行緒之執行緒建立

1.函式 include intpthread create pthread t restrict thread,const pthread attr t restrict attr,void start routine void void restrict arg 引數 thread 為執行緒id...

執行緒 建立執行緒

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