Doddy escribiste:No sabía que los
threads dependían del procesador. Entonces, estoy frito (tengo un Sempron 140)
Es lo que significa "thread": hebra o
hilo de ejecución. Tu puedes lanzar 350 hilos de ejecución, pero si tu procesador solo tiene un núcleo, el sistema operativo deberá parar un hilo cada vez para permitir entrar al otro. El resultado es que es una ejecución "simultánea" de forma aparente: depende de la velocidad del procesador el que nos engañe en nuestra apreciación de que hace varias cosas a la vez. Si le pedimos muchas, pues notaremos que no puede atender a todas, así que algunas tareas veremos que se paran de forma momentánea.
En mi Linux, en este momento, tengo 436 hilos de procesos ejecutándose de forma simultánea, pertenecientes a 120 tareas (aplicaciones) distintas. Bueno, realmente, de todos esos, solo siete están ejecutándose en este momento: htop, amule, ktorrent, firefox, thunderbird, boinc y gkrellm. El resto están esperando para cuando ocurra algún evento. Si aumento el número de aplicaciones, empezaré a notar retrasos en la ejecución de las tareas.
Doddy escribiste:También te pregunté esa duda rara que si uso un sleep() en Perl o Python pararía el thread actual o si seguiría funcionando. Que tenía pensado hacerlo cada 50 threads (ahora no estoy seguro). ¿ Qué conclusión tienes de eso ?
Claro que lo pararía. Un hilo de ejecución es como cualquier otro programa. Si le pides que se pare, pues se para.
Lo que no sabemos es qué es lo que realmente quieres hacer. ¿Qué es tan importante como para solicitar 350 recursos de forma simultánea? ¿No los puedes pedir de cinco en cinco, por ejemplo?