我有一个多线程程序,在下面的代码中,当y的值小于0时,我需要所有线程停止运行。
这是源代码 -
else if(y<0)
{
flag=1;
printf("Exit the program\n");
pthread_exit((void *)55);
printf("sdjfajdflsdj");
// return NULL;
}
正在发生的事情是该程序正在打印该行 - 退出程序,但卡在那里。它没有去行printf(“sdjfajdflsdj”);它也没有退出代码。
有人可以帮忙吗?
由于
答案 0 :(得分:3)
pthread_exit
退出当前主题,而不退出其他主题。我相信exit
应该退出所有线程。
答案 1 :(得分:1)
一个问题是你退出线程的方式。
pthread_exit((void *)55);
不传递指向值55的指针,它在内存中传递引用55的指针,该指针不太可能是可读地址。尝试:
int val = 55;
pthread_exit((void *)&val);