Je dois écrire une application en C qui publie des informations sur le web en utilisant CURL. L'application doit exécuter jusqu'à N (disons 10) requêtes en parallèle au maximum. Comment puis-je attendre que N'IMPORTE QUEL thread se termine, plutôt qu'un thread spécifique qui utilise pthread_join()
.
J'ai lu sur pthread_cond_wait, mais la plupart des exemples montrent comment le thread de contrôle (main) réveille un thread de travail. J'ai besoin de l'inverse - les threads de travail doivent pouvoir signaler/réveiller le thread parent avant de se terminer.
Mise à jour : En fait, j'ai besoin d'un moyen pour faire dormir le thread manager et quand un thread worker termine son travail, il doit réveiller le thread manager pour lui donner un autre travail. Cela n'a pas d'importance si le thread se termine et qu'un nouveau thread est créé pour le travail ou si le pool de threads est utilisé. Il faut tout de même qu'il y ait un moyen de signaler au manager qu'un travail est terminé.
J'espère que je ne recevrai pas cette suggestion. :
while(asleep){
for(i = 0; i< threadCount; i++){
pthread_mutex_lock(mutex);
if(threads[i] == IDLE_STATE)
startNewJob();
pthread_mutex_unlock(mutex);
usleep(100*1000);
}
}