Diferencia entre revisiones de «Programación en Ruby»

Contenido eliminado Contenido añadido
Línea 902:
=='''Esquema de administración y separación de la Memoria '''==
=='''Implementación de Co-Rutinas '''==
 
El manejo de threads(Corrutinas) en ruby es muy sencillo, la creación de threads se basa en pasar un bloque a la creación de un objeto de la clase thread.
 
t1 = Thread.new do
10.times do
puts "hello from thread 1"
sleep(0.2)
end
end
t2 = Thread.new do
10.times do
puts "hello from thread 2"
sleep(0.2)
end
end
t1.join
t2.join
 
Para pasar parámetros se hace de la siguiente forma:
 
t1 = Thread.new(1) do |id|
10.times do
puts "hello from thread #{id}"
sleep(0.2)
end
end
t2 = Thread.new(2) do |id|
10.times do
puts "hello from thread #{id}"
sleep(0.2)
end
end
t1.join
t2.join
 
Para controlar las secciones críticas tan solo hay que cambiar la variable de clase critical a true:
 
counter = 0;
t1 = Thread.new do
100000.times do
Thread.critical = true
counter += 1
Thread.critical = false
end
end
t2 = Thread.new do
100000.times do
Thread.critical = true
counter -= 1
Thread.critical = false
end
end
t1.join
t2.join
puts counter
 
=='''Manejo de Excepciones '''==