Hilos en Ruby
Los hilos son procesos que se ejecutan en un programa, de manera que cada hilo representaría los procesos activos que pueden ser ejecutados independientemente unos de otros y/o a la vez.
El objeto en Ruby es Threads y se comporta como una clase.
Para usarlo se hace así:
nombre_de_variable=Threads.new (elemento/s){}
#Vamos a analizar los hilos en Ruby # la objeto que apunta a hilos es Thread # se comporta como una clase, es decir, variable=Threads.new(elementos){...} # ------------------ EJEMPLO 1 ----------------------------- puts "------------------ EJEMPLO 1 -----------------------------" array=['hola', 'esto', 'es', 'un', 'ejemplo'] # Creamos un array de 5 elementos. hilo=Array.new # Creamos un array para los hilos. Seria de 5 elementos y cada uno de ellos sera un hilo(Esto lo veremos a continuacion ;)) a=0 for element in array #creamos un bloque hilo<<Thread.new(element){|x| # Creamos un hilo para cada elemento y lo introducimos en el array hilo. a+=1 puts print x, " ---> Hilo #{a}" # Hacemos que imprima por pantalla x puts } end hilo.each{|z| z.join} # Con este ultimo comando, nos aseguramos de que los hilos no mueran antes de que finalize el programa principal (luego se explicara esto mas detenidamente). puts # ------------------ EJEMPLO 2 ----------------------------- # Este es otro ejemplo pero con el método each. puts "------------------ EJEMPLO 2 -----------------------------" array1=['hola1', 'esto1', 'es1', 'un1', 'ejemplo1'] hilo1= Array.new b=0 array1.each{|element| hilo1<<Thread.new(element){|x| b+=1 puts print x, " --->> #{b}" puts}} hilo1.each{|ele| ele.join} puts # ------------------ EJEMPLO 3 ----------------------------- puts "------------------ EJEMPLO 3 -----------------------------" array2=['hola2', 'esto2', 'es2', 'un2', 'ejemplo2'] hilo2= Array.new c=0 array2.each{|element| hilo2<<Thread.new(element){|x| c+=1 puts print x, " --->> #{c}" if x.to_s=="es2" print " estás en el segundo elemento" end puts}} hilo2.each{|ele| ele.join} puts