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