用c创建一个pthread,等待创建线程完成执行[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c创建一个pthread,等待创建线程完成执行[关闭]相关的知识,希望对你有一定的参考价值。

下面的代码,我创建一个pthread,然后我让主线程等待创建的线程完成执行:

#include <stdio.h>
#include <pthread.h>

void * createThread(void * u){
  printf("Tread has been created");
}

int main(){
  //pthread_t tid;
  //pthread_create(&tid,NULL,&createThread,NULL);
  //printf("Main thread");

  //pthread_join(tid,NULL);

  pthread_t tid[2];
  int i;
  for(i = 0; i < 2; i++){
    pthread_create(&tid[i],NULL,&createThread,NULL);
  }
  int j;
  for(j = 0; j < 2; i++){
    pthread_join(tid[j],NULL);
  }
  return 0;
}

当我通过起诉gcc 1_4.c -lpthread然后./a.out来运行这个我必须等待很长时间才能在终端中看到答案!

我做错了什么,或者我无法看到问题。

答案

在以下循环中,您将增加i而不是j

   for(j = 0; j < 2; i++){
    pthread_join(tid[j],NULL);
}

将其更改为以下,它将正常工作:

   for(j = 0; j < 2; j++){
    pthread_join(tid[j],NULL);
}

以上是关于用c创建一个pthread,等待创建线程完成执行[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

读者线程没有退出 - Posix Pthreads

如何实现线程互等,线程2等待线程1结束后才继续执行。(可设置标志位) 求源代码

pthread_join - 多个线程等待

Detached vs. Joinable POSIX线程

linux线程的创建、退出、等待、取消、分离

多线程的创建退出等待删除语法