次の方法で共有


CThreadPool クラス

このクラスには、ワーク アイテムのキューを処理するワーカー スレッドのプールが用意されています。

template <
   class Worker,
   class ThreadTraits = DefaultThreadTraits
>
class CThreadPool :
   public IThreadPoolConfig

パラメーター

  • [ワーカ]
    使用されるプロセス作業項目にコードを提供するスレッド プールで ワーカー元 に、クラスは列を試みてください。

  • ThreadTraits
    プールのスレッドを作成するために使用する関数を提供するクラス。

メンバー

9tz6fz1e.collapse_all(ja-jp,VS.110).gifパブリック コンストラクター

名前

説明

CThreadPool::CThreadPool

スレッド プールのコンストラクター。

CThreadPool::~CThreadPool

スレッド プールのデストラクター。

9tz6fz1e.collapse_all(ja-jp,VS.110).gifパブリック メソッド

名前

説明

CThreadPool::AddRef

IUnknown::AddRefの実装。

CThreadPool::GetNumThreads

プール内のスレッドの数を取得するときにこのメソッドを呼び出します。

CThreadPool::GetQueueHandle

キューの作業項目に使用される I/O 完了ポートのハンドルを取得するときにこのメソッドを呼び出します。

CThreadPool::GetSize

プール内のスレッドの数を取得するときにこのメソッドを呼び出します。

CThreadPool::GetTimeout

スレッド プールがシャットダウンするまでスレッドを待機するミリ秒単位の最大時間を取得するときにこのメソッドを呼び出します。

CThreadPool::Initialize

スレッド プールを初期化するには、このメソッドを呼び出します。

CThreadPool::QueryInterface

IUnknown::QueryInterfaceの実装。

CThreadPool::QueueRequest

プールのスレッドが処理される作業項目をキューに配置するには、このメソッドを呼び出します。

CThreadPool::Release

IUnknown::Releaseの実装。

CThreadPool::SetSize

プール内のスレッドの数を設定するには、このメソッドを呼び出します。

CThreadPool::SetTimeout

スレッド プールがシャットダウンするまでスレッドを待機するミリ秒単位の最大時間を設定するには、このメソッドを呼び出します。

CThreadPool::Shutdown

スレッド プールをシャットダウンするためにこのメソッドを呼び出します。

解説

プールのスレッドが作成され、プールが、のサイズが変更されて初期化時、またはシャットダウンまたは破棄されます。クラスのインスタンスは ワーカー スレッド のプールの各ワーカー スレッドのスタック上に作成されます。各インスタンスは、スレッドの有効期間に置かれます。

スレッドの作成の直後に、Worker::Initialize は、そのスレッドに関連付けられたオブジェクトで。スレッドの破棄する直前に、Worker::Terminate が呼び出されます。どちらのメソッド void* の引数を受け取る必要があります。この引数の値は、CThreadPool::Initializeの pvWorkerParam のパラメーターでスレッド プールに渡されます。

作業で使用できるキューとワーカー スレッドに作業項目がある場合は、ワーカー スレッド キューから項目をプルし、そのスレッドのワーカー オブジェクトの [実行] のメソッドを呼び出します。3 項目は、メソッドに渡されます: キュー、Worker::Initialize と Worker::Terminateに渡されると同じ pvWorkerParam ポインターからの I/O 完了ポートのキューに使用する オーバーラップ の構造体に対する項目。

クラスは、ワーカー スレッド プールで typedef を指定して列を行う項目の種類、Worker::RequestTypeを宣言します。この型は ULONG_PTRとの間でキャストできる必要があります。

ワーカー クラスの例は CNonStatelessWorker クラスです。

継承階層

IUnknown

IThreadPoolConfig

CThreadPool

必要条件

Header: atlutil.h

参照

関連項目

IThreadPoolConfig インターフェイス

DefaultThreadTraits

その他の技術情報

サービス アプリケーション