Tengo un hilo principal que genera alrededor de 20 hilos de trabajo.
Necesito detener el hilo Principal hasta que todos los demás hilos hayan terminado.
Sé (thread) .Join. Pero eso solo funciona para un hilo.¿Cómo esperaría a que se detengan varios subprocesos?
y Multiple Combina un rendimiento herido como este.
t1.Join()
t2.Join()
...
t20.Join()
como el programa espera una por una para cada parar.
¿Cómo haré que el hilo principal espere a que termine todo un conjunto de hilos?
Este comportamiento se desea, ¿verdad? Realmente no importa que espere t1 primero (mientras que t3 ya está listo), al final, cuando callstackpointer pasa por 't20.Join;' usted sabe que todos los hilos están detenidos. – Excel20
Vea también http://stackoverflow.com/questions/263116/c-waiting-for-all-threads-to-complete –
El tratamiento de hilos como los dulces es un error común. Solo inicie 20 hilos cuando tenga una máquina con al menos 20 núcleos de CPU. Comenzar más en realidad ralentiza su programa. Obtener el bloqueo correcto para tantos subprocesos también es * muy * difícil, normalmente solo se obtienen hilos esperando el uno al otro. –