開発じたばた日誌

前へ●●●次へ
じたばた日誌目次へ戻る
TSUCHY Softへ戻る


FileSum マルチスレッド編

 いよいよWIN32のすぐれた機能「マルチスレッド」に突入だ。 スレッドなんて聞き慣れない言葉ですね。でもそんな難しい概念ではありません。

 自分の分身を作って、そいつにも仕事をさせることができるのです。 ああ、現実そんなことができたらどんなにいいでしょう!分身を会社にいかせて私は家で寝ていてもいいのです。 「パーマン」を知っている人ならだれでもそう思うに違いありません。

 さてFileSumが家で寝ていては困ります。ソフトの場合、分身と仕事の同時進行できるってのがいいですね。 分身は何人でも作れますが、FileSumは一人しか作りません。

 分身は「スタート」ボタンが押された瞬間に生まれ、ディレクトリのサイズを計算するというFileSumの 唯一にして最大の機能を実行します。仕事が終わればお亡くなりになります。合掌。

 んじゃあ、もともとのFileSum自身は何をやってるんだって?あなたのマウス操作や、分身の調べてきたデータを きれいに表示する仕事をしているんです。先程紹介した「仕事の同時進行」というイメージとは結びつきませんが、 分身が仕事をしている間にも、あなたのマウスイベントを処理できるという点で同時進行と言えます。

 逆に分身を作らずにFileSum自身がディレクトリのサイズを調べる仕事をしたらどうなるでしょうか? それほど大きな障害はありませんが、「中断」というあなたの要求を受け付けることが難しくなります。 できないことはないのですが、ディレクトリを調査しつつ、あなたの「中断要求」がないかチェックしないと いけません。これは時間のムダなのです。 やはりこういう処理はマルチスレッドの機能を使い、分身に仕事をさせるので正解でしょうね。

FileSum 驚いた編

 さあ、いよいよ基本的な部分は出来上がりです。C:ドライブの全てを調査してみましょう。START!!

 あれ、もう終わった?? バグか?? 本当に全部調べたのかい? 16ビット版のFileSumと結果を比較してみましょう。同じだ!!! 私は信じられませんでした。 パソコンに向かって「うげー、本当かよー」と叫んでいる私を見たら、 あなたは私が気が狂ったと思うかもしれません。

 そのスピード!そのスピード!そのスピード!そのスピード!そのスピード!

 なんということでしょう。16ビット版で20秒かかっていた処理が32ビット版では4秒足らずで終わるのです。 16ビットと32ビットの違いはあるでしょうが、この差はVBとC++の処理速度の違いから出るものです。

 全ての苦労が吹っ飛んだ瞬間です。C++への乗り換えはこのスピードを得たということだけで正解なのです。 なんて素晴らしいんだ。たとえどはまりが待ち受けていようとも、このスピードには変えられません。