LINUX多執行緒程式設計

2021-09-01 17:28:06 字數 2244 閱讀 2134

#include #include #include #define theard_number 3

#define repeat_number 5

#define delay_time_levels 10.0

void *thrd_func(void *arg){

int thrd_num=(int)arg;

int delay_time=0;

int count=0;

printf("theard %d is starting\n",thrd_num );

for(count=0;count這裡主函式第乙個for迴圈pthread()的最後乙個引數可能不同版本的linux寫法上會有所不同,我的是ubuntu14.04,要寫成&no,red hat下可以寫為(void*)

**編寫沒有問題,但是在gcc 編譯的時候會報錯

# gcc thread.c

thread.c: in function 『thrd_func』:

thread.c:9:15: warning: cast from pointer to integer of different size [-wpointer-to-int-cast]

int thrd_num=(int)arg;

^/tmp/cc3y8dex.o:在函式『main』中:

thread.c:(.text+0xff):對『pthread_create』未定義的引用

thread.c:(.text+0x163):對『pthread_join』未定義的引用

collect2: error: ld returned 1 exit status

網上找到了原因,原來pthread不是linux的預設庫中的檔案,所以無法直接使用,需要在後面加上-lpthread

# gcc thread.c -o test -lpthread

thread.c: in function 『thrd_func』:

thread.c:9:15: warning: cast from pointer to integer of different size [-wpointer-to-int-cast]

int thrd_num=(int)arg;

^

這裡出現乙個警告也沒關係,編譯能夠通過就行,具體什麼原因我也不知道。

執行test檔案即可得到結果

./test

create threads success

waiting for threads to finish......

theard 878785664 is starting

theard 878785664 is starting

theard 878785664 is starting

threard 878785664 : job 0 delay = 5

threard 878785664 : job 0 delay = 10

threard 878785664 : job 0 delay = 10

threard 878785664 : job 1 delay = 4

threard 878785664 : job 1 delay = 10

threard 878785664 : job 1 delay = 6

threard 878785664 : job 2 delay = 2

threard 878785664 : job 2 delay = 5

threard 878785664 : job 3 delay = 4

threard 878785664 : job 2 delay = 6

threard 878785664 : job 3 delay = 4

threard 878785664 : job 4 delay = 4

theard 878785664 finished

threard 878785664 : job 3 delay = 7

threard 878785664 : job 4 delay = 8

theard 878785664 finished

theard 0 joined

theard 1 joined

threard 878785664 : job 4 delay = 6

theard 878785664 finished

theard 2 joined

Linux 多執行緒程式設計

1.建立執行緒和退出的函式原型 int pthread create pthread t thread,pthread attr t attr,void start routine void void arg pthread exit 0 其他還有很多相關的函式。2.編譯時要加上 lpthread ...

Linux多執行緒程式設計

linux 多執行緒程式設計 多執行緒支援 posix 執行緒介面,稱為 pthread,pthread create 用來建立執行緒,pthread join 等待執行緒結束,函式的原型分別如下 extern int pthread create p pthread t thread,const ...

linux 多執行緒程式設計

多執行緒的使用 典型的執行緒包括乙個執行時間系統,它可以按透明的方式來管理執行緒。通常執行緒包包括對執行緒的建立和刪除,以及對互斥和條件變數的呼叫。posix標準執行緒庫具有這些呼叫。這些包還提供執行緒的動態建立和刪除,因此,直到執行時間之前,執行緒的個數不必知道。執行緒具有乙個id 乙個堆疊 乙個...