「マルチスレッド」の版間の差分

編集の要約なし
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
7行目: 7行目:


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


この問題を解決する手法としてスレッドを使い回す「[[スレッドプール]]」という手法が考案されているが、あまりに負荷が小さい処理だと「スレッドに[[データ]]を渡す処理」でやっぱり遅くなることがある。
このため負荷は「スレッドの準備」と「スレッドでの処理」を合算したもので考える必要があり、あまりに負荷が小さいスレッドでの処理だと逆に遅くなる傾向がある。
 
この問題を解決する手法としてスレッドを使い回す「[[スレッドプール]]」という手法が考案されているが、あまりに負荷が小さいスレッドでの処理だと「スレッドに[[データ]]を渡す処理」でやっぱり遅くなることがある。
 
[[ゲーム]]でマルチスレッド対応(マルチコア対応)が進まない原因はだいたいこれである。
ゲームでは「60fps=1処理0.016秒以内」という制約が定番なのでスレッドを準備している余裕がない。


=== 不具合の温床 ===
=== 不具合の温床 ===
28行目: 33行目:
* [[マルチコア]]
* [[マルチコア]]
* [[OpenMP]]
* [[OpenMP]]
[[category: CPU]]
[[category: プログラミング]]