スレッド
スレッドとプロセスって以前からふわっとしか理解してないんだよなmrsekut.icon
もっとプログラムのレベルでカチッと理解したいんだが
プロセス内で実行される軽量な処理単位
同じプロセス内の他のスレッドとメモリ空間を共有する
スレッド間の通信はプロセス内で行われるため、効率的である
CPU利用の単位
1コアが1度に処理できる単位が1スレッドっってこと #?? メモリ空間を共有しつつ、複数の制御の流れを実現
OSのプロセススケジューラがスケジューリングできる最小の実行単位
比較的生成コストが低い
通信コストが低い
同じメモリ空間なので、コストなしでアクセス可
メモリ空間を共有しているのでデータの破壊があり得る
スレッドの生成にはシステムコールが必要
CPU命令数にするとかなりの数
1スレッド生成することでスタック領域として数Mバイトを割り当てる
でかい
1000スレッドなら1GB
1プロセスの中で複数のスレッドを生成する
そのプロセスが管理している以下のものなどが各スレッドで共有される
主記憶
シングルコア、シングルスレッドの例
code:_
|
v
1つのコアが1つのスレッドを実行する。
シングルコア、マルチスレッドの例
code:_
|
v
1つのコアが複数のスレッドを順次実行する。
マルチコア、マルチスレッドの例
code:_
| |
v v
2つのコアがそれぞれ別々のスレッドを同時に実行する