Blogle Storeetのトップページへ
メインメニューブログ一覧を表示 新規記事一覧を表示 ヘルプを表示
アクセスカウンター
571597
フリーワード検索
  
人気タグ一覧
ぶろぐるとは?
「ぶろぐる」ではブログとしての日記や出来事などの記事を投稿することができます。
自由気ままに情報発信したい方や趣味の紹介など利用方法はブロガーさん次第!
お気に入りのブログの更新通知を受け取ったり、コメントの更新などの通知を受け取れる読者登録もできます。

ページ切り替え


スレッドを利用した分散処理

投稿日時 2015/05/04 00:46:26

ゲストさん、こんにちはhappy01

高級アプリ製作の極意 ~WPF編~のお部屋へようこそ。
このお部屋では 第17章 の「 スレッドを利用した分散処理 」についてお話したいと思います。

アプリ製作において どうしても避けられないのは CPU負荷の高い処理 です。
たくさんのデータの中から検索したり難しい計算を繰り返し行ったりするとCPUをたくさん使用することになります。

高級アプリは基本操作する人を待たせないことが要求されますsign03
どうしても待ってもらう必要が出てきた時は「 処理を行っている状態を常に表示する 」や「 バックスレッドを使用して他の作業が出来るようにする 」などの対策が必要です。

バックスレッドは便利で表向きのUI操作とは別に自由に処理を行うことが出来ます shine
そして、スレッドの処理のタイミングで表向きのUIへ表示を反映させることが出来ます
scissors

バックスレッドをたくさん使用すればその分CPU負荷も上がるので全部スレッドを分ければ良いのかと聞かれたらそうではないので 本当に高負荷の処理に合わせて利用するのが好ましい

サンプルで実装しているスレッド処理は、「 Threadクラスを使用した高度なスレッド制御 」と「 Taskクラスを使用したシンプルなスレッド処理 」の2種類ですheart04


特に .Net framework 4.5から用意されたTaskクラスのスレッド処理は本当に実装が楽で扱いやすい 処理ですnote
1分掛かるアプリがあってそこへ10行程度のTask分散処理を記述したところ10秒程度になったなんてこともありますhappy02
お仕事で200人以上の人が使うアプリとかをちょくちょく作る私は 特に処理速度は気を使っていますよ

仕事でも下の単純な計算式を周りの人にしっかり伝えています。
アプリ利用者の作業コストdollar アプリによって待たされる時間clock ×人数shadow ×使用頻度pc

待ち時間が1分10人1日に10回使用するとしたら100分の作業時間が掛かるわけで、10秒の待ち時間なら10分で済むわけです。

1日に平等にある作業時間を とりあえずで組んだへなちょこプログラムで浪費しないように sign01


clip サンプルダウンロード
 


clip サンプルイメージ画像

おとは@開発隊長さんの投稿画像
解析用のボタンを2種類用意しました。
「解析」 のボタンはバックスレッドを使用しないので ボタンを押した瞬間から数分間、アプリの操作を一切受け付けません
「解析(スレッド)」 のボタンはバックスレッドを使用します。
バックスレッド処理のため処理中でも操作を行うことができます。

サンプルプログラムは2種類のスレッド処理を記述しています。
ソースコード内にマクロで機能の切り替えが出来るようになっていますのでUSE_THREADの定義を探して有効無効に切り替えてみて下さい。

サンプルの中では C言語向けのAPIをDLLから参照して呼び出しする少し高度な処理 も書いています。
独自制御のスレッド処理の場合はCPU割り当てもしたいことがあるので使用するCPU割り当てを行うための処理も参考になるかと思います。
 


ページ切り替え




Blogle Storeet Core System v2.0a
おとはうぇぶあぷりぶ (IPv4) v2.6a
Copyright (C) 2014-2018 Blogle Storeet Development Team.

サブメニューログインする 読者登録する 利用規約を表示 プライバシーポリシーを表示 特定電子メール法に基づく表記を表示 お問い合わせページへ移動

注意事項


当サイト内に掲載されている画像、文章、その他コンテンツは投稿者又は「ぶろぐるすとーりーと」の運営者に著作権を有するものとします。 よって、著作者に無断で転載、複製、配布(2次創作物を含む)等の利用を禁じします。私的利用の範囲であればこの限りではありません。