246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
|
# File 'lib/concurrent_worker/worker.rb', line 246
def cncr_block
@ipc_channel = IPCDuplexChannel.new
@c_pid = fork do
@ipc_channel.choose_io
Thread.handle_interrupt(Object => :never) do
begin
Thread.handle_interrupt(Object => :immediate) do
yield_base_block
end
rescue
@ipc_channel.send($!)
ensure
@ipc_channel.send(nil)
end
end
end
@ipc_channel.choose_io
@recv_thread = result_handle_thread do
ipc_recv_loop
end
end
|