У меня есть очередь заданий, и я хочу создать пул из четырех потоков, в который я могу загружать свои задания. Я застрял в том, как сделать потоки и держать их в подвешенном состоянии, пока нет работы.
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
, как я могу дать им новую работу, не убивая их?