当前一个具有相同例程的线程正在运行时,多次调用pthread_create

时间:2016-05-26 07:07:32

标签: c pthreads

在第二个pthread_create调用中是否有任何内存泄漏或任何其他问题(例如:为pthread分配的内存)如果我在前一个具有相同例程的线程运行时意外调用pthread_create两次?

static void* thread_routine(void *data)
{
   while (1) {sleep(1)}
   return NULL;
}

int main()
{
    static pthread_t thread_id;
    pthread_create(&thread_id, NULL, thread_routine, NULL);
    pthread_create(&thread_id, NULL, thread_routine, NULL);

    while (1) {//> never return <//}
    return 1;
}

感谢您的帮助/解答。

1 个答案:

答案 0 :(得分:1)

没有。没有内存泄漏。你可以多次调用相同的线程函数,并且重用相同的线程标识符(thread_id)也没关系。但请注意,您不能加入一个没有ID的线程。实际上,它是线程的常见用例之一:大型工作分为小的,相同的块,多个线程可以处理它们。

顺便说一下,你不需要在主线程中有一个无限循环。如果您不需要主线程,只需从main()拨打pthread_exit(0);即可。 忙等待循环只是浪费CPU。