アットウィキロゴ

スレッド

専用スレッドを使用して非同期の計算量依存の処理を実行する

  • 下記に当てはまる場合は専用スレッドを使用したほうがよい
    • 通常とは異なる優先度で動作するスレッドが必要な場合
    • スレッドをフォアグラウンドスレッドとして動作させ、そのスレッドのタスクが完了するまでアプリケーションが終了しない
    • 計算量依存のタスクに非常に長い時間がかかる
    • スレッドを開始した後で、完了する前にThreadのAbortメソッドを呼び出してスレッドを中止する場合

専用スレッド作成

Thread dedicatedThread = new Thread(MethodName);
dedicatedThread.Start(5);

CLRスレッドプール

  • CLRごとに1つのスレッドプールがある
  • スレッドプールはすべてのアプリケーションドメイン間で共有
  • 単一のプロセス内に複数のCLRがロードされている場合は複数のスレッドプールがある
  • アイドル状態が続くと、スレッドは自動で起動し、処理を実行し終了する
    • リソースの問題が出そうだが、アプリケーションがそれほど多くの処理を実行していないことを意味しているため問題ない

単純な計算量依存の処理を実行する

スレッドプールのキューにタスクを投入するには、ThreadPoolクラスが利用される

  • QueueUserWorkItemメソッド
    • QueueUserWorkItem(WaitCallback callback, Object state)
    • callbackに実際の処理を記述

memo

  • 最適なスレッド数はCPUの数と同じ。コンテキストスイッチが発生しないため
最終更新:2015年08月20日 21:22