с, правильное использование потоков - PullRequest
0 голосов
/ 11 августа 2011

когда вы создаете поток с помощью thread_create и передаете функцию, функция работает вечно, если в функции есть бесконечный цикл? например

for(;;){
    //dosomthing
}

Сохраняет ли поток "делать что-то", пока поток не будет уничтожен или программа не будет завершена?

Thanx

1 Ответ

1 голос
/ 12 августа 2011

Когда вы вызываете thread_create (), созданный поток сам вызывает функцию, которую вы передали.Например,

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

создаст новый поток, а новый поток запустит функцию thread_do ().Если теперь вы ранее определили thread_do () как:

void* thread_do(){

  for(;;){
    // do something
  }

  return NULL;
}

, тогда поток действительно перейдет в бесконечный цикл.

...