C: Quelle est la façon de faire un poolthread avec les pthreads?

J'ai une file d'attente de travaux et je veux faire une piscine de 4 threads où je peux jeter mon emplois à. Ce que je suis bloqué à l'est dans la façon de faire les fils et de les maintenir en suspension alors qu'il n'y a pas de travail.

JOB QUEUE        | job1 | job2 | job3 | job4 | ..

THREAD POOL      | thread1 | thread2 | thread3 | thread4 |

Pour créer les threads que j'ai actuellement à l'initialisation du point:

for (t=0; t<num_of_threads; t++){
    pthread_create(&(threads[t]), NULL, doSth2, NULL);
}

Où num_of_threads=4 et doSth2 est une fonction avec rien à l'intérieur.
Donc, une fois que j'ai créé le 4 threads et ils sont fait avec doSth2, comment puis-je leur donner des nouvelles de travail à faire, sans les tuer?

OriginalL'auteur Pithikos | 2011-08-05