gpt4 book ai didi

c++ - 让主程序等待线程完成

转载 作者:可可西里 更新时间:2023-11-01 15:22:09 29 4
gpt4 key购买 nike

在下面的代码中,我创建了一些线程,每个线程都休眠了几秒钟。

但是我的主程序不等待线程完成,我假设线程会继续运行直到它们自己完成。

有没有办法让线程在调用线程结束时继续运行。

#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;
}

谢谢

编辑:

很抱歉没有澄清,是否可以不明确跟踪我当前正在运行的线程并使用 join。

最佳答案

每个程序都有一个主线程。它是您的 main() 函数执行的线程。当该线程的执行结束时,程序将与其所有线程一起结束。如果你想让你的主线程等待其他线程,使用必须使用 pthread_join功能

关于c++ - 让主程序等待线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6467932/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com