多執行緒學習

2021-07-30 14:13:37 字數 1656 閱讀 5971

用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 同步機...

多執行緒學習

簡單學習多執行緒。建立多執行緒有兩種方法。一 繼承thread類。多執行緒練習,通過繼承thread public class testthread extends thread public static void main string argsd 二 實現runnable介面。多執行緒練習。通...

多執行緒學習

用 編輯 的多執行緒時用gcc threadtest 1.c 編譯時 一直報錯,報錯如下 tmp ccgko5iu.o 在函式 thread create 中 threadtest 1.c text 0x13b 對 pthread create 未定義的引用 threadtest 1.c text ...