🕊️
【用語整理】スレッド/プロセスまわり
あれ?railsって並列で処理されるよね?スレッドだっけ??
あれ?スレッドとかプロセスとか、違いは??
となったので一度整理します。
プロセス
-
実行中のプログラムのこと。OSが管理するもの。
-
OSは各プロセスにメモリ領域を割り当てる。各プロセスはメモリを共有しない!
-
ps
コマンドで確認できる$ ps PID TTY TIME CMD 1126 ttys001 0:00.01 -bash 1155 ttys003 0:00.01 /bin/bash --init-file /Applications/Visual Studio Code 1156 ttys005 0:00.01 /bin/bash --init-file /Applications/Visual Studio Code
- ↑bashとVSCodeのプロセスが実行されている!
-
railsだと???
# TODO: 確認?? user 12345 0.0 1.5 50000 30000 ttys001 S+ 10:00 0:00 ruby bin/rails server user 12346 0.1 2.5 80000 50000 ttys001 Sl 10:00 0:01 puma 5.6.4 ...
-
rails s
とpuma
のプログラムが実行されている!(rails s
すると、webサーバー機能を持つpuma
が実行されるらしいです)
-
-
例文
- 「こんにちは。実行中のプロセスを確認するコマンドを教えてください。」
- 「dockerのプロセスを停止しましょう。はい。」
スレッド
-
プログラム内の処理の単位。
-
メモリ空間を共有して同時に実行される。
-
種類
- シングルスレッド
- 1プロセス内で、1つの処理
- A、B、Cの3つのリクエストが来た際、A -> B -> Cと順番に処理していく
- マルチスレッド
- 1プロセス内で、Nこの並列処理
- A、B、Cの3つのリクエストが来た際、A / B / C を同時に処理していく
- シングルスレッド
-
railsだと、pumaがスレッドを分けて処理する仕組みを持っている。詳しくは、次回調べます!
-
例文
- 「おはよう。railsは、マルチスレッドで動きます。」
- 「僕は、スレッドセーフな実装をしなくてはならない。」
まとめ
- こんな感じ
Discussion