スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

マルチスレッドで書くべきか

マルチスレッドにするとソフトは速くなるのか?(笑門来福)

最近では「ハイパースレッディング」や「マルチコア」というキーワードが「高速化」というキーワードとともに登場する機会が多いので、そのような誤解が一部にはあるのかもしれません。分かっている人にとっては当たり前の話ですが、「マルチスレッド=高速化」ではありません。

マルチスレッド処理あるいはマルチプロセス処理とは、複数のスレッドもしくはプロセスを並行して動作させることによって、複数の処理を行なうことです。並行処理といっても、単一CPUのシステムでは、実際の処理はシーケンシャルに実行されるため、CPU処理は全く高速化されません。それどころか、マルチスレッド動作にはそれなりオーバーヘッドが伴うため、CPUの計算量だけとればむしろ増大する方向です。

では、なぜマルチスレッドプログラミングを行うのでしょう。ひとつは、I/O等の待ち時間の間に他のスレッドの実行を行うことで処理効率やレスポンス性を改善するためです。シングルスレッドでも書けないことはないのですが、スイッチのタイミングを自分で意識して書く必要があり大変です。このような処理はOSにまかせるべきですし、何より可読性・保守性があがります。
また、マルチコアになれば、本当の意味での並列実効で処理効率があがる可能性もあります。

但し、マルチスレッドには同期や排他等の問題がありますので、プログラミングする上での注意点もたくさんあります。マルチスレッド(マルチタスク)のプログラムというのは、組み込み系では日常的ですが、全く書いたことのない方もおられるでしょう。このあたりの話はまた別の機会に。

【関連書籍】
実践マルチスレッドプログラミング
Javaスレッド完全制覇
Pスレッドプログラミング

コメント

はじめまして!

わりと難解と思われるプログラミングTIPS等を分かりやすく解説してあって、いいですね!
これからも記事を楽しみにしています。
記事とは関係ない話ですいません。

Re: はじめまして!

>yasuhoさん
ありがとうございます。
書くことで自分の頭の中の整理しようというレベルなので、かなりの駄文だと思いますが、少しでも参考になる情報になればいいなと思っております(^^;)。
非公開コメント

本のおすすめ

4873115655

4274065979

4822236862

4274068579

4822255131

B00SIM19YS


プロフィール

  • Author:proger
  • 組み込み関係で仕事してます

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。