プロセスとスレッドの違いは?
プロセスはOSから独立したメモリ空間を割り当てられた実行単位。ブラウザ、メモ帳、ゲームはそれぞれ別プロセスで動く。スレッドはプロセスの中で動く軽量な実行単位で、同じメモリを共有する。ブラウザの中でタブごとの描画、ネットワーク通信、JavaScript実行が別スレッドで動くイメージだよ
なんでスレッドを使うの?
1つのプロセス内で複数の処理を同時に行うためだよ。Webサーバーがリクエストごとにプロセスを作ると重いけど、スレッドなら軽量。メモリ共有で通信も速い。ただしスレッド間で同じ変数を同時に書き換えると競合状態(race condition)が起きるから、排他制御(mutex/lock)が必要になるんだ
Chromeが重いのはプロセスのせい?
Chromeはタブごとに独立したプロセスを作る設計だよ。メモリ消費は大きいけど、1つのタブがクラッシュしても他のタブは影響を受けない。セキュリティ的にも各タブが隔離されるメリットがある。メモリ vs 安定性のトレードオフだね
非同期処理との違いは?
マルチスレッドは「複数の作業者が同時に作業する」、非同期処理は「1人の作業者が待ち時間に別の作業をする」イメージ。Node.jsはシングルスレッドだけどイベントループで非同期I/Oを処理して高い並行性を実現している。Go言語のgoroutineは軽量スレッド(グリーンスレッド)で両方のいいとこ取りだね