302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
|
# File 'lib/concurrent_worker.rb', line 302
def set_rcv_thread
Thread.new do
Thread.handle_interrupt(Object => :never) do
begin
Thread.handle_interrupt(Object => :immediate) do
loop do
result = @ipc_channel.recv
break if result == :worker_loop_finished
raise result if result.kind_of?(Exception)
call_result_callbacks(result)
end
end
rescue
Thread.pass
raise $!
ensure
@req_counter.close
@ipc_channel.close
call_retired_callbacks
end
end
end
end
|