Ruby でマルチスレッドプログラミングなど
Threadを1つ
th = Thread.fork do p 33 end th.join
Threadを複数
count = 3 count.times.map do |i| Thread.fork do p i end end.each(&:join)
Process
pid = fork do p 'Process fork' end exitpid, status = *Process.waitpid2(pid)
Fiber
- Fiber とはThread を軽量化したもの.
f = Fiber.new do p "First" Fiber.yield # Fiber.yield を呼ぶとコール元に処理が戻る. もう一度Fiber#resumeが呼ばれたときは ここから処理が継続する. p "Second" Fiber.yield p "Third" Fiber.yield p "4th" Fiber.yield p "5th" end f.resume f.resume