Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/04/2007, 04:42
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Re: Hilos..¿cuando compensa usarlos?

Los Threads tienen sentido cuando tienes que hacer cosas que dependen de distintos "recursos" que te hacen esperar y una tarea no hace falta que espere a otra.

Si tienes una sóla CPU, hacer Threads para tareas que compitan por la CPU es perder el tiempo, al igual que hacer Threads que compitan por leer el mismo archivo etc. Los Threads hay que usarlos, habitualmente, cuando tienes algo esperando por un recurso y hay otra tarea que podrías hacer mientras. Por ejemplo: Cuando te conectas por la red a algo, el tiempo que la tarea espera que le respondan no ocupa CPU, asi que podrías hacer otra cosa. Si te conectas a varios sitios de red distintos, puedes intentar conectarte a la vez mientras no satures la red, conectarte a la BDD y mientras esperas hacer otra cosa... etc.

Eso y las tareas asíncronas que hay que hacer cada cierto tiempo sin tener que llamarlas explicitamente desde el programa principal, como Threads que comprueban si ficheros de configuracion han cambiado, si las conexiones de BDD siguen abiertas...

Si quieres ver un ejemplo de eficacia, haz un codigo que se conecte a 5 URLs distintas una detras de la otra, despues haz uno que se conecte a través de Threads, un Thread por conexión, por ejemplo.

En mi opinión, no se puede hacer, o no es nada sencillo ni fiable, una regla general de cuando compensa usarlos y cuando no, hay demasiados factores a tener en cuenta y la definición de las tareas que si pueden o no, es muy vaga.

S!