-1
當您使用thread_create創建線程並傳遞函數時,如果函數中存在無限循環,函數是否會永久運行? 如
c,正確使用線程
for(;;){
//dosomthing
}
是否線程保持「做財產以後」直到線程被破壞,或程序完成?
感謝名單
當您使用thread_create創建線程並傳遞函數時,如果函數中存在無限循環,函數是否會永久運行? 如
c,正確使用線程
for(;;){
//dosomthing
}
是否線程保持「做財產以後」直到線程被破壞,或程序完成?
感謝名單
當你調用thread_create()時生成將自身調用傳遞了函數的線程。例如:
pthread_t thread1;
pthread_create(&thread1, NULL, thread_do, NULL);
將創建一個新線程,新線程將運行函數thread_do()。 如果現在您已經定義thread_do()爲:
void* thread_do(){
for(;;){
// do something
}
return NULL;
}
則線程將進入無限循環確實如此。
您的問題在您發佈的源代碼海中丟失。如果你刪除所有多餘的代碼並詢問一個清晰的概念,你可能有更大的機會獲得有用的答案。 –
我認爲你顯示的是類似但不相關的pthreads代碼的負載。我不完全確定你在問什麼。 –
在上面的例子中,你的程序將永遠運行直到線程終止。這取決於循環內部的內容。如果你的父線程想加入它將阻塞,直到完成。 – IanNorton