用vi編輯c的多執行緒時用gcc threadtest_1.c 編譯時 一直報錯,報錯如下:
/tmp/ccgko5iu.o:在函式『thread_create』中:
threadtest_1.c:(.text+0x13b):對『pthread_create』未定義的引用
threadtest_1.c:(.text+0x15e):對『pthread_create』未定義的引用
/tmp/ccgko5iu.o:在函式『thread_wait』中:
threadtest_1.c:(.text+0x182):對『pthread_join』未定義的引用
threadtest_1.c:(.text+0x1a0):對『pthread_join』未定義的引用
查了一些部落格終於解決了,原因是pthread庫不是linux系統預設的庫,連線時需要使用庫libpthread.a,所以在使用pthread_create建立執行緒時,
現將原始碼如下:
#include
#include
#define max 10
pthread_t thread[2];
pthread_mutex_t mut;
int number = 0,i;
void *thread1()
printf("thread1: 主函式在等我們完成任務嗎?\n");
pthread_exit(null);
}
void *thread2()
printf("thread2:主函式在等我們完成任務嗎?\n");
pthread_exit(null);
}void thread_create(void)
void thread_wait(void)
int main()
執行命令如下:gcc -o pthread -lpthread threadtest_1.c
./pthread
執行完畢
執行結果:
我是主函式偶,我正在建立執行緒,呵呵
我是主函式偶,我正在建立執行緒,呵呵
執行緒1被建立
執行緒2被建立
我是主函式,我正在等待執行緒完成任務
thread2 : i'm thread 2
thread2 : number = 0
thread1 : i'm thread 1
thread1: number = 1
thread1: number = 2
thread2 : number = 3
thread1: number = 4
thread2 : number = 5
thread1: number = 6
thread1: number = 7
thread2 : number = 8
thread1: number = 9
thread2 : number = 10
thread1: 主函式在等我們完成任務嗎?
執行緒1已經結束
thread2:主函式在等我們完成任務嗎?
執行緒2已經結束
如果還是不能執行,就再引入一句
#pragma comment(lib, "pthreadvc2.lib")
多執行緒學習
thread和runnable的區別 單繼承模式thread 而 runnable是介面 start 和run的區別 start是乙個執行緒只能啟動,run可以執行多次,並且run是呼叫當前正在執行的執行緒 wait notify object物件所具有的 sleep setpriority 同步機...
多執行緒學習
用 編輯 的多執行緒時用gcc threadtest 1.c 編譯時 一直報錯,報錯如下 tmp ccgko5iu.o 在函式 thread create 中 threadtest 1.c text 0x13b 對 pthread create 未定義的引用 threadtest 1.c text ...
多執行緒學習
簡單學習多執行緒。建立多執行緒有兩種方法。一 繼承thread類。多執行緒練習,通過繼承thread public class testthread extends thread public static void main string argsd 二 實現runnable介面。多執行緒練習。通...