執行緒建立函式如下:
#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 啟動執行緒,預設呼叫...