Estoy trabajando en multi threading en ruby. El fragmento de código esPunto muerto en Ruby join()
threads_array = Array.new(num_of_threads)
1.upto(num_of_threads) do |i|
Thread.abort_on_exception = true
threads_array[i-1] = Thread.new {
catch(:exit) do
print "s #{i}"
user_id = nil
loop do
user_id = user_ids.pop()
if user_id == nil
print "a #{i}"
Thread.stop()
end
dosomething(user_id)
end
end
}
end
#puts "after thread"
threads_array.each {|thread| thread.join}
No estoy usando cualquier bloqueo de exclusión mutua. Pero consigo callejón sin salida .. A continuación se presenta la salida del código anterior ..
s 2s 1s 11s 8s 6s 7s 10s 14s 16s 21s 24s 26s 5s 3s 19s 20s 23s 28s 4s 9s 12s 18s 22s 29s 30s 27s 13s 17s 15s 25a 4a 10a 3a 6a 21a 24a 16a 9a 18a 5a 28a 20a 2a 22a 11a 29a 8a 14a 23a 26a 1a 19a 7a 12fatal: punto muerto detectado
la salida anterior nos dice que estancamiento es después de la matriz user_ids es nula y pasando con join() y stop() de la clase Thread en ruby ... ¿Qué está pasando realmente y cuál es la solución a este error?
fue la respuesta correcta? ¿Has resuelto el problema? –