Estoy intentando ejecutar 500 clientes que envían alguna solicitud al servidor simultáneamente para propósitos de prueba de carga. El cliente es un programa de ruby nuevamente. Suena trivial. Pero estoy enfrentando un problema extraño con los hilos de rubí. Mi código se ve así:Ruby solo crea 3 subprocesos a la vez
n = 10
n.times do
Thread.new do
`calc`
end
end
El código es una muestra. Solo intento ejecutar el comando calc
desde la línea de comandos (si está intentando este código en una plataforma que no sea Windows, reemplácelo por algún comando que funcione en su línea de comando o shell). Esto luego será reemplazado por 'ruby my_client.rb
' y también el valor de n se establecerá en 500 (o lo que sea).
El problema que estoy enfrentando aquí es que independientemente del número de subprocesos que quiero crear, solo se crean subprocesos a la vez. Eso es solo 3 ventanas de cálculo abiertas simultáneamente. Los hilos restantes solo esperan en una cola esperando la terminación de estos 3 hilos. Puede ser que tenga algo que ver con las llamadas de bloqueo y no bloqueo. Pero probé Java-equivalente del mismo programa y funcionó perfectamente. Es un viejo refrán que los hilos en rubí no son recomendables. ¿Es cierto que esto es un problema con los hilos de Ruby o estoy haciendo algo mal?
Funciona para mí bien, 1.8.7.72-2 en Debian GNU/Linux. Estoy pensando que hay algo específico de Windows. – womble
Eso es posible, pero el programa java funcionó perfectamente en la misma plataforma, la misma máquina. – Chirantan
Funcionó bien para mí usando ruby 1.8.7 en Windows XP SP3. – Lolindrath