マルチプロセスとマルチスレッドについて、タスクを分割するのにどちらの方針がいいのか、自分用にまとめたくなったのでまとめてみる。
比較項目 | マルチプロセス | マルチスレッド |
---|---|---|
アドレス空間 | 独立 | 共有 |
共有メモリ | システムコール | 元から共有 |
コールバック | プロセス間通信 | 直接呼べる |
プロセス落ち | 落ちたプロセス限定 | 全滅 |
ポイントとしては、マルチスレッドはアドレス空間共有によるコールバックやリソース(割り込み等)の共有が楽ではあるが、地雷を踏めば全滅。また、独立した作業を協調して実行する場合は、スレッドにタスクを振るのではなくプロセスが個別に担当したほうが良いように思える。
コールバックのようなロジックが多いなら、そのタスクを1プロセスに集約するべきなのだろう。関数を直接呼べないというのは、実際に作っていく過程では結構なストレスを感じてしまう。
なかなか難しいものだ。