「マルチスレッド」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
'''マルチスレッド'''([[英語]]:multi thread)とは、ひとつの[[プロセス]]内で複数の[[スレッド]]を使用することである。
+
'''マルチスレッド'''とは、複数の[[スレッド]]を使用することである。
  
== 利点 ==
+
==応用例==
=== マルチコアCPUを有効活用できる ===
+
* バックグラウンドで重い処理をしても、[[UI]]の動作を止めない([[応答なし]]にならない)ことができる
マルチコアCPUを有効活用できる。
+
* [[BOINC]]の計算をしながら[[動画]]を見たり[[webブラウズ]]をしたりできるのもマルチスレッドの一種
だいたい「コア数の2倍」くらいまでのスレッド数までは有効。
 
 
 
== 欠点 ==
 
=== 準備の負荷 ===
 
「マルチスレッドを使用する準備」に一定の負荷がかかる。
 
スレッドを利用するには、スレッドを生成したり、スレッドにデータを渡したりという前処理が必要となる。
 
 
 
このため負荷は「スレッドの準備」と「スレッドでの処理」を合算したもので考える必要があり、あまりに負荷が小さいスレッドでの処理だと逆に遅くなる傾向がある。
 
 
 
この問題を解決する手法としてスレッドを使い回す「[[スレッドプール]]」という手法が考案されているが、あまりに負荷が小さいスレッドでの処理だと「スレッドに[[データ]]を渡す処理」でやっぱり遅くなることがある。
 
 
 
[[ゲーム]]でマルチスレッド対応(マルチコア対応)が進まない原因はだいたいこれである。
 
ゲームでは「60fps=1処理0.016秒以内」という制約が定番なのでスレッドを準備している余裕がない。
 
 
 
=== 不具合の温床 ===
 
マルチスレッドは、[[バグ]]の温床であり、[[デバッグ]]が非常に難しいのが特徴である。そのため[[業務アプリ]]の世界では[[禁忌]]であり基本的に登場しない技術である。
 
 
 
== 備考 ==
 
初期の[[Windows]]では「全てがスレッド」であった。
 
[[UNIX]]における[[fork]]の感覚で[[プロセス]]を作ったつもりでも実際は[[スレッド]]が作られた。
 
Windowsという1つのプロセスの中で「アプリ」という子スレッドが次々と生まれたのである。
 
そのため[[プログラム]]が少しでも[[バグ]]ると[[OS]]を巻き込み[[クラッシュ]]した。
 
一方でマルチスレッドでも比較的安全になるような工夫も多く生まれ、後のマルチスレッド流行時には積み重ねた対応度の良さが目立った。
 
  
 
==関連項目==
 
==関連項目==

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)