在第二个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;
}
感谢您的帮助/解答。
答案 0 :(得分:1)
没有。没有内存泄漏。你可以多次调用相同的线程函数,并且重用相同的线程标识符(thread_id
)也没关系。但请注意,您不能加入一个没有ID的线程。实际上,它是线程的常见用例之一:大型工作分为小的,相同的块,多个线程可以处理它们。
顺便说一下,你不需要在主线程中有一个无限循环。如果您不需要主线程,只需从main()
拨打pthread_exit(0);
即可。
忙等待循环只是浪费CPU。