У меня очередь заданий, и я хочу создать пул из 4 потоков, где я могу бросить свои задания. Я застрял в том, как создавать потоки и держать их подвешенными, пока нет работы.
JOB QUEUE | job1 | job2 | job3 | job4 | ..
THREAD POOL | thread1 | thread2 | thread3 | thread4 |
Чтобы создать потоки, которые я имею в настоящее время в точке инициализации:
for (t=0; t<num_of_threads; t++){
pthread_create(&(threads[t]), NULL, doSth2, NULL);
}
Где num_of_threads = 4 и doSth2 - это функция, в которой нет ничего. Итак, как только я создал 4 потока, и они сделаны с doSth2, как я могу дать им новую работу, не убивая их?