Как использовать пул потоков с pthreads?

У меня есть очередь заданий, и я хочу создать пул из четырех потоков, в который я могу загружать свои задания. Я застрял в том, как сделать потоки и держать их в подвешенном состоянии, пока нет работы.

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 , как я могу дать им новую работу, не убивая их?

20
задан jww 16 November 2019 в 06:36
поделиться