在下面的代碼中,我創建了一些線程數,每個線程休眠幾秒鐘。使主程序等待線程完成
但是,我的主程序不會等待線程完成,我假設線程將繼續運行,直到他們自己完成。
即使調用線程完成,是否還有線程繼續運行。
#include <pthread.h>
#include <iostream>
#include <cstdio>
#include <cstdlib>
int sample(int min,int max){
int r=rand();
return (r %max+min);
}
void *worker(void *p){
long i = (long) p;
int s = sample(1,10);
fprintf(stdout,"\tid:%ld will sleep: %d \n",i,s);
sleep(s);
fprintf(stdout,"\tid:%ld done sleeping \n",i,s);
}
pthread_t thread1;
int main(){
int nThreads = sample(1,10);
for(int i=0;i<nThreads;i++){
fprintf(stderr,"\t-> Creating: %d of %d\n",i,nThreads);
int iret1 = pthread_create(&thread1, NULL, worker, (void*) i);
pthread_detach(thread1);
}
// sleep(10);//work if this is not commented out.
return 0;
}
感謝
編輯:
對不起,不澄清,這可能沒有明確地跟蹤我的當前運行的線程,並通過加入。
如果這是一個圖形化的用戶界面,是的,這將是真實的,因爲有一個消息循環。您必須有條件繼續運行,直到所有線程完成爲止,例如加入。 – 2011-06-24 12:43:10