Тупик в Ruby join ()

Я работаю в многопоточности в ruby. Фрагмент кода

  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}

Я не использую мьютексные блокировки. Но я захожу в тупик .. Ниже приведен вывод приведенного выше фрагмента кода ..

с 2с 6с 8с 1с 11с 7с 10с 14с 16с 21с 24с 5с 26с 3с 19с 20с 23с 4с 28с 9с 12с 18с 22с 29с 30с 27с 13с 17с 15с 25а 4а 10а 3а 6а 21а 24а 16а 9а 18а 5а 28а 20а 2а 22а 11а 23а 9а 14а 26a 1a 19a 7a 12fatal: обнаружен тупик

Приведенный выше вывод говорит нам, что взаимоблокировка происходит после того, как массив user_ids имеет значение null и происходит с join () и stop () класса Thread в ruby. Что на самом деле происходит и как можно решить эту ошибку ??

Ответы на вопрос(3)

Ваш ответ на вопрос