forkとプロセス
forkはプロセスを複製します。先に「スレッドはひとつのプロセス上で複数の処理を実行させる」際の話だと書きましたが、プロセスはスレッドよりも大きな処理の単位です。
早速forkを使ってみます。Thread.new do...end
の代わりにfork do...end
としてブロックをforkに渡してやるコードは次のように書けます。
このときプロセスを監視していると、ruby fork.rb
というプロセスが10個立ち上がっているのがわかります。
スレッドの場合は以下のようにプロセスは1個だけです。スレッドは同じプロセス内で走るため、メモリ空間を共有しておりデータが簡単に共有できます。
おわりに
以上でThreadとforkの基本的な解説は終了です。並列・平行プログラミングはマルチコア化の進んだ現在重要なテーマの一つであると言えるため、後日本記事に追加するか、別記事としてまとめる形で引き続き扱っていきたいと思います。