マルチプロセスとマルチスレッド
CPUマルチコアによって並列動作の需要の高まり
まったく別の動作をするプログラムを同時に動かすこと
ある目的をもつ1つのプログラムを複数の流れに分割して実行すること
マルチスレッドはプロセス内に複数の流れを作る
1つのスレッドしか持たないプログラム=シングルスレッドプログラム、複数はマルチスレッドプログラムと言う POSIXは「POSIXスレッド」というスレッド操作APIを提供、Linuxはlibcを介して利用できる
メリット
同じプロセスで全スレッド間で共有するのでメモリをはじめとしてリソース消費量が少ない(さらにはメモリを共有しているので見かけ上の協調動作がしやすい)
デメリット
1つのスレッドの障害が全スレッドに影響
各スレッドが呼び出す処理はマルチスレッドプログラムから呼び出してよいか熟知する必要(スレッドセーフか)
グローバル変数にアクセスしている処理はスレッドセーフではない
同時に1つのスレッドからしか呼ばないようにプログラマが制御しないといけない