【ぷろせすとすれっど】

プロセスとスレッド とは?

💡 プロセスは「独立した部屋」、スレッドは「部屋の中の作業者」
📌 このページのポイント
プロセスとスレッド プロセス(独立したメモリ空間) プロセスA メモリ空間A コード データ 分離 プロセスB メモリ空間B コード データ スレッド(共有メモリ空間) 1つのプロセス 共有メモリ空間 スレッド1 実行中 スレッド2 待機中 スレッド3 実行中 プロセス スレッド メモリ空間が独立 → 安全 メモリを共有 → 高速 切り替えコストが大きい 切り替えコストが小さい クラッシュが他に影響しない 1つの障害が全体に波及しうる
プロセスとスレッドの違い
ひよこ ひよこ

プロセススレッドの違いは?

ペンギン先生 ペンギン先生

プロセスはOSから独立したメモリ空間を割り当てられた実行単位。ブラウザ、メモ帳、ゲームはそれぞれ別プロセスで動く。スレッドプロセスの中で動く軽量な実行単位で、同じメモリを共有する。ブラウザの中でタブごとの描画、ネットワーク通信、JavaScript実行が別スレッドで動くイメージだよ

ひよこ ひよこ

なんでスレッドを使うの?

ペンギン先生 ペンギン先生

1つのプロセス内で複数の処理を同時に行うためだよ。Webサーバーがリクエストごとにプロセスを作ると重いけど、スレッドなら軽量。メモリ共有で通信も速い。ただしスレッド間で同じ変数を同時に書き換えると競合状態(race condition)が起きるから、排他制御(mutex/lock)が必要になるんだ

ひよこ ひよこ

Chromeが重いのはプロセスのせい?

ペンギン先生 ペンギン先生

Chromeはタブごとに独立したプロセスを作る設計だよ。メモリ消費は大きいけど、1つのタブがクラッシュしても他のタブは影響を受けない。セキュリティ的にも各タブが隔離されるメリットがある。メモリ vs 安定性のトレードオフだね

ひよこ ひよこ

非同期処理との違いは?

ペンギン先生 ペンギン先生

マルチスレッドは「複数の作業者が同時に作業する」、非同期処理は「1人の作業者が待ち時間に別の作業をする」イメージ。Node.jsはシングルスレッドだけどイベントループで非同期I/Oを処理して高い並行性を実現している。Go言語のgoroutineは軽量スレッド(グリーンスレッド)で両方のいいとこ取りだね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
プロセススレッド」って出てきたら「プログラム実行の単位で、独立度が違う」と思えればだいたいOK!
📖 おまけ:英語の意味
「Process / Thread」 = プロセス / スレッド
💬 Process(処理)は独立した実行環境、Thread(糸)はプロセスの中で走る細い処理の流れだよ
← 用語集にもどる