2011-08-11 55 views
-1

当您使用thread_create创建线程并传递函数时,如果函数中存在无限循环,函数是否会永久运行? 如
c,正确使用线程

for(;;){ 
    //dosomthing 
} 

是否线程保持“做财产以后”直到线程被破坏,或程序完成?

感谢名单

+1

您的问题在您发布的源代码海中丢失。如果你删除所有多余的代码并询问一个清晰的概念,你可能有更大的机会获得有用的答案。 –

+0

我认为你显示的是类似但不相关的pthreads代码的负载。我不完全确定你在问什么。 –

+0

在上面的例子中,你的程序将永远运行直到线程终止。这取决于循环内部的内容。如果你的父线程想加入它将阻塞,直到完成。 – IanNorton

回答

1

当你调用thread_create()时生成将自身调用传递了函数的线程。例如:

pthread_t thread1; 
pthread_create(&thread1, NULL, thread_do, NULL); 

将创建一个新线程,新线程将运行函数thread_do()。 如果现在您已经定义thread_do()为:

void* thread_do(){ 

    for(;;){ 
    // do something 
    } 

    return NULL; 
} 

则线程将进入无限循环确实如此。