Parece que está utilizando MRI, que es incapaz de ejecutar subprocesos en paralelo. Por el momento, las únicas implementaciones de Ruby listas para producción que pueden ejecutar subprocesos en paralelo son JRuby e IronRuby.
Recuerde, si desea que los subprocesos realmente se ejecuten en paralelo, entonces cada capa en la pila debe ser capaz de hacer eso. Tome JRuby, por ejemplo: JRuby puede ejecutar hilos de Ruby en paralelo. Sin embargo, se implementa hilos mediante la asignación de ellos a las roscas de JVM, así que si la JVM es incapaz de correr hilos en paralelo (y hay algunos para los que este es el caso), entonces el hecho de que JRuby puede ejecutar Rubí hilos en paralelo no te ayuda ni un poco. Muchas JVM, a su vez, asignan subprocesos de JVM a los subprocesos del sistema operativo. Y nuevamente: si el SO no es capaz de ejecutar subprocesos en paralelo, no hay nada que la JVM pueda hacer. Y por último pero no menos importante: si solo hay un procesador, el ejercicio completo no tiene sentido de todos modos.
Podría estar relacionado con o un duplicado de: http://stackoverflow.com/questions/56087/does-ruby-have-real-multithreading –