退出多线程程序中的所有线程

时间:2011-10-18 17:33:35

标签: c

我有一个多线程程序,在下面的代码中,当y的值小于0时,我需要所有线程停止运行。

这是源代码 -

     else if(y<0)
     {
             flag=1;
             printf("Exit the program\n");
             pthread_exit((void *)55);
             printf("sdjfajdflsdj");

            // return NULL;
     }

正在发生的事情是该程序正在打印该行 - 退出程序,但卡在那里。它没有去行printf(“sdjfajdflsdj”);它也没有退出代码。

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:3)

pthread_exit退出当前主题,而不退出其他主题。我相信exit应该退出所有线程。

答案 1 :(得分:1)

一个问题是你退出线程的方式。

pthread_exit((void *)55);

不传递指向值55的指针,它在内存中传递引用55的指针,该指针不太可能是可读地址。尝试:

int val = 55;
pthread_exit((void *)&val);