#include #include#include
#include
#define max 10pthread_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
)
if(thread[1] !=0)
}int
main()
我是主函式哦,我正在建立執行緒,呵呵下面乙個稍微複雜的多執行緒執行緒1被建立
執行緒2被建立
我是主函式哦,我正在等待執行緒完成任務阿,呵呵
thread1 : i
'm thread 1
thread1 : number = 0
thread2 : i
'm thread 2
thread2 : 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已經結束
extern int pthread_join __p ((pthread_t __th, void **__thread_return));
第乙個引數為被等待的執行緒識別符號,第二個引數為乙個使用者定義的指標,它可以用來儲存被等待執行緒的返回值。這個函式是乙個執行緒阻塞的函式,呼叫它的執行緒將一直等待到被等待的執行緒結束為止,當函式返回時,被等待執行緒的資源被收回。乙個執行緒的結束有兩種途徑,一種是象我們上面的例子一樣,函式結束了,呼叫它的執行緒也就結束了;另一種方式是通過函式pthread_exit來實現。它的函式原型為:
extern void pthread_exit __p ((void *__retval)) __attribute__ ((__noreturn__));
唯一的引數是函式的返回**,只要pthread_exit中的引數retval不是null,這個值將被傳遞給 thread_return。最後要說明的是,乙個執行緒不能被多個執行緒等待,否則第乙個接收到訊號的執行緒成功返回,其餘呼叫pthread_join的執行緒則返回錯誤**esrch。
例項:
#include #include#include
pthread_t tid1, tid2;
void *tret;
void *thr_fn1(
void *arg)
void *thr_fn2(
void *arg)
intmain(
void)
命令:#gcc -lthread myfile11-3
.c :#./a.out
執行結果:
thread
2exiting
thread
2 exit code 3
thread
1returning
thread
1 exit code 2
Linux 下C語言程式設計
linux 下c語言程式設計 1.程式設計的概念和理解 1.1程式編譯的過程 在這一操作中,程式完成了複雜的過程。乙個程式的編譯,需要完成詞法分析 語法分析 中間 生成 優化 目標 生成。l 詞法分析 指的是對由字元組成的單詞進行處理,從左至右逐個字元地對源程式進行掃瞄,產生乙個個單詞符號。然後把字...
Linux下C語言程式設計概述
linux下的c語言程式設計與在其他環境中的c程式設計一樣,主要涉及到編輯器 編譯鏈結器 偵錯程式及專案管理工具。本篇內容屬於嵌入式學院 嵌入式工程師職業培訓班 一期課程中linux作業系統中的部分內容,這裡我們先對這4種工具進行一下簡單介紹。1 編輯器 linux下的編輯器就如windows下的w...
Linux下C語言程式設計概述
linux下的c語言程式設計與在其他環境中的c程式設計一樣,主要涉及到編輯器 編譯鏈結器 偵錯程式及專案管理工具。本篇內容屬於嵌入式學院嵌入式工程師職業培訓一期課程中linux作業系統中的部分內容,這裡我們先對這4種工具進行一下簡單介紹。1 編輯器 linux下的編輯器就如windows下的word...