Ich implementiere einen Thread-Pool. Die Arbeit, die von jedem Thread benötigt wird, ist 1-10 Sekunden CPU, also bin ich glücklich, einen traditionellen Thread-Pool mit Arbeitern zu haben, oder ich bin glücklich, einen neuen Thread für jede Arbeitseinheit zu erstellen. Es ist egal.Warten, bis einer von mehreren Threads beendet ist?
Ich mag würde einen Weg für die Master-Steuer Thread müssen zu wissen, wenn einer der N-Worker-Threads ihre Arbeit beendet und ist für mehr (oder seine Zeit, eine andere zu beginnen) bereit. Ich habe pthread_join und pthread_cond_wait angeschaut. Es scheint keinen Weg zu geben, auf einen von N zu warten. Also dachte ich darüber nach, dass der Master-Thread eine Variable hat, die er benutzt, um schlafen zu gehen und die Arbeiter wach zu machen. Dies scheint zu funktionieren, wenn die Arbeiter nicht sterben. Wenn sie jedoch sterben, gibt es ein Fenster zwischen der Zeit, in der der Arbeiter den Controller aufweckt, und der Zeit, in der er stirbt, mit der ich nicht umgehen möchte.
Ich habe Intels TBB angeschaut, aber es sieht viel komplizierter aus, als ich brauche.
Gibt es eine einfache Äquivalent in PTHREADS zu WaitForMultipleObjects in Microsoft Windows?
ich dies als C markiert, können Sie sich frei, es zu ändern, wenn dies nicht der Fall ist. –
haben Sie Looping (N) für Pthread_join versucht. http://opengroup.org/onlinepubs/007908799/xsh/pthread_join.html –
Ich stimme small_ticket zu. Warum kann das Schleifen für n pthread_joins nicht funktionieren? – Jay