プロセスとスレッドの違いについて。

項目 プロセス スレッド
定義 実行中のプログラムの独立したインスタンス プロセス内で実行される軽量な実行単位
メモリ空間 独立したアドレス空間を持つ 同じプロセス内のメモリを共有
作成コスト 高い(リソースの割り当てが必要) 低い(既存のプロセス内で作成可能)
通信 プロセス間通信(IPC)が必要 同一プロセス内での共有メモリによる通信が可能
独立性 高い(プロセスがクラッシュしても他のプロセスに影響しない) 低い(スレッドがクラッシュするとプロセス全体に影響する可能性がある)
スケジューリング 独立してスケジュールされる 同一プロセス内でスケジュールされる
利用用途 アプリケーション全体の実行単位 アプリケーション内の並行処理

動画

ByteByteGoが出している動画による解説。

サーバーアーキテクチャ

サーバーアーキテクチャにも下記の分類がある。

  • マルチスレッドアーキテクチャ
  • マルチプロセスアーキテクチャ

たとえばRubyの世界だと unicorn or puma という選択肢がある。

unicornはプロセスベース

pumaはスレッドベース

ref. Pumaの使い方 まとめ - 猫Rails

worker数の目安、thread数の目安も参考にしたい。