为什么pthread_join本身不会导致错误或死锁?

时间:2019-10-20 03:36:08

标签: c multithreading

https://repl.it/repls/ColdSilentTriangles

#include <stdio.h>
#include <pthread.h>
pthread_t th;

void *fp(void *args) {
  printf("Thread running...");
  pthread_join(th, NULL);
  printf("Thread waiting...");
  return NULL;
}

int main(void) {
  printf("Hello World\n");
  pthread_create(&th, NULL, fp, NULL);
  pthread_join(th, NULL);
  return 0;
}

man pthread_join

  

pthread_join()函数会暂停调用线程的执行,直到目标线程终止为止,除非目标线程已经终止。

为什么程序不会导致死锁? 为什么没有错误产生? 为什么应该在pthread_join()阻塞线程的情况下在屏幕上输出“线程等待...”?

1 个答案:

答案 0 :(得分:3)

records.json不会阻止执行,而是在您的示例中返回pthread_join