技術的なやつ

技術的なやつ

4.2 Rubyでマルチプロセス

コンちゃんの改良にあたってマルチプロセスないしマルチスレッドの機構が必要になったのでメモ。
Ruby(テスト環境ではRuby1.9.3)でマルチプロセスをしたい時は、以下のように書く。

Process.fork do
  # ここに処理を書く
end

Process.forkで囲んだところに、子プロセスの処理を書く。

以下、テストコードとその結果。

Process.fork do
  10.times do
    puts "Chinchin!!!"
    sleep 1
  end
end

5.times do
  puts "Hello!!!!"
  sleep 1
end
Hello!!!!
Chinchin!!!
Hello!!!!
Chinchin!!!
Hello!!!!
Chinchin!!!
Hello!!!!
Chinchin!!!
Hello!!!!
Chinchin!!!
Chinchin!!!
okabi@ibako:~/$ Chinchin!!!
Chinchin!!!
Chinchin!!!
Chinchin!!!

親プロセスが死ぬと端末的にはプロセス全体が終了としたと見なすらしい。

テスト環境はvbox上のUbuntu12.04だが、低スペにしたからか日本語入力処理が遅すぎて困る。デスクトップ買うか組むかしてLinux専用機作りたいでござる。