マルチスレッド

提供: MonoBook
2022年9月30日 (金) 02:24時点におけるAdministrator (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

マルチスレッド英語:multi thread)とは、ひとつのプロセス内で複数のスレッドを使用することである。

利点

マルチコアCPUを有効活用できる

マルチコアCPUを有効活用できる。 だいたい「コア数の2倍」くらいまでのスレッド数までは有効。

欠点

負荷

「マルチスレッドを使用する準備」に一定の負荷がかかる。 このため負荷は「スレッドの準備」と「スレッドでの処理」を合算したもので考える必要があり、あまりに負荷が小さい処理だと逆に遅くなる傾向がある。

この問題を解決する手法としてスレッドを使い回す「スレッドプール」という手法が考案されているが、あまりに負荷が小さい処理だと「スレッドにデータを渡す処理」でやっぱり遅くなることがある。

不具合の温床

マルチスレッドは、バグの温床であり、デバッグが非常に難しいのが特徴である。そのため業務アプリの世界では禁忌であり基本的に登場しない技術である。

備考

初期のWindowsでは「全てがスレッド」であった。 UNIXにおけるforkの感覚でプロセスを作ったつもりでも実際はスレッドが作られた。 Windowsという1つのプロセスの中で「アプリ」という子スレッドが次々と生まれたのである。 そのためプログラムが少しでもバグるとOSを巻き込みクラッシュした。 一方でマルチスレッドでも比較的安全になるような工夫も多く生まれ、後のマルチスレッド流行時には積み重ねた対応度の良さが目立った。

関連項目