我必须编写一个使用 CURL 在 Web 上发布信息的 C 应用程序。应用程序最多只能并行运行 N 个(比如说 10 个)请求。如何等待任何线程完成,而不是使用pthread_join()
.
我阅读了有关 pthread_cond_wait 的信息,但大多数示例是控制线程(主)如何唤醒工作线程。我需要相反的——工作线程必须能够在退出之前发出信号/唤醒父线程。
更新:实际上我需要一种让管理器线程休眠的方法,当一个工作线程完成它的工作时,它应该唤醒管理器线程给它另一个工作。线程是否结束并为作业创建新线程或使用线程池都没有关系。仍然需要一种方法来向经理发出工作已完成的信号。
我希望我不要得到这个建议:
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);
}
}