创建的线程没有被执行

created thread doesn't get executed

我又来了一个关于这个(该死的)线程编程的新问题。 这是我的代码,希望你能帮助我理解它有什么问题(请记住,我不得不重新编写这段代码,而不是复制粘贴,所以可能会有一些类型错误——编译后的代码是可以工作的,所以问题不是语法)。

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

int i=0;

void *TFun(void *TArg)
{
printf("THREAD    i=%d\n", i);
i++;
return NULL;
}

int main()
{
pthread_t TID;

TID=pthread_create(&TID, NULL, TFun, NULL);
pthread_join(TID, NULL);

printf("THREAD    i=%d\n", i);
i++;

exit(0);
}

我希望这会打印“THREAD i=0”,然后是“MAIN i=1”,但这并没有发生。它只打印“MAIN i=0”,线程没有执行。

https://i.ibb.co/Y0KYWCK/code.png https://i.ibb.co/pznZ3TT/result.png

TID 的值通常在 pthread_create() 中通过引用写入,但也被 int return 值覆盖;更改为添加的 int 变量:

(旧)

TID=pthread_create(&TID, NULL, TFun, NULL);

(新)

int pcr;
pcr = pthread_create(&TID, NULL, TFun, NULL);