中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

スレッディングプログラムの勧め

以前

AMDとIntelはなぜデュアルコア化を急ぐのか?
http://blogs.users.gr.jp/naka/archive/2004/11/05/5876.aspx

という記事を書いた。

マルチCPUの時代にはマルチCPUを前提としたプログラムがある。それがスレッディングプログラム。

まずは以下の図を見てほしい。

上から順番に

  • モデルケース
  • 1CPU1多重
  • 1CPU2多重
  • 1CPU4多重
  • 2CPU2多重
  • 2CPU4多重

となっている。

この例ではモデル処理として9秒掛かる処理を4回することを想定している。

単純に計算すると36秒かかる処理だ。

IO処理は同時に動くことができないから、多重度を上げてもIO待ちで処理は頭打ちになるというのが、1CPU2多重から4多重にした場合の説明だ。

2CPUの場合CPU能力的に倍になっているのだが、多重度が1だと1CPUの場合となんら変わらない。

正し多重度を2にするだけで複数のCPUを効率よく使うようになる。

スレッドはどのCPUに所属するか固定化されるためである。

また、このモデルの場合には2CPUで4多重にしても2秒しか縮まっていないことがわかる。

CPUの個数以上に多重化することは無駄とはいわないが(このモデルが正しい保証もないし)最低でもCPUの個数と同じだけの多重化を果たすと非常に効率よく動作することがわかる。

.Netの場合にはスレッドを簡単に利用できるようになっているので是非マルチスレッドを意識してプログラミングしてほしい。

投稿日時 : 2004年11月11日 20:49

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント