MIDI dRuby Ractor Ractor.new(rinda) do |ts| while true ts.break('nq_loop') sym, size, r1, r2 = ts.take([:nq, Integer, Integer, Integer]) ts.log([:nq_begin, r1, r2]) ts.write([:nq_ans, size, r1, r2, NQueen.nq2(size, r1, r2)]) ts.log([:nq_end, r1, r2]) end end def take_a(rinda, size) found = 0 size.times.reverse_each do |r1| size.times.reverse_each do |r2| tuple = rinda.take( [:nq_ans, size, r1, r2, nil]) rinda.log(tuple) found += tuple[4] end end found end