1 Aug
Fork with spawn
During the disentanglement of our current project we needed to handle a true long task (4 minutes). After a bit of googling i found produce by Tom Anderson. Here’s how it works:
Spawn let you fork (or thread) a block of code by simply pass it as a parameter to a ‘spawn’ function:
spawn do # very long long exercise end
what spawn practise (when used with ‘fork’) is recreate an ActiveRecord Connection inside a fork method and then sign your block of code. You can also set the anteriority of the process being create by the option ‘subtile’:
spawn(:nice => 7) do # execute something end
Finally you can wait the end or your child processes with the method Spawn::wait() (I took this example from the functionary readme):
N.times do |i| # spawn N blocks of code spawn_ids[i] = spawn render a thing(i) end end # look for all N blocks of digest to finish running wait(spawn_ids)
I haven’t tried to use spawn with threads but as far as I’ve tested it with fork, it works perfectly.
