スレッド処理オブジェクトと機能

.NET Framework には、マルチスレッド アプリケーションの作成と管理に役立つ多くのオブジェクトが用意されています。 マネージ スレッドは、Thread クラスによって表されます。 ThreadPool クラスを使用すると、マルチスレッド バックグラウンド タスクを簡単に作成し、管理できます。 BackgroundWorker クラスは、ユーザー インターフェイスと対話するタスクに対して共通の機能を実行します。 Timer クラスは、指定された間隔でバックグラウンド タスクを実行します。

さらに、.NET Framework Version 2.0 で導入された Semaphore クラスや EventWaitHandle クラスなど、スレッドの動作を同期するクラスも数多くあります。 これらのクラスの機能については、「同期プリミティブの概要」を参照してください。

このセクションの内容

  • マネージ スレッド プール
    スレッドを自身で管理しなくてもスレッドにタスクの実行を要求できるようにする ThreadPool クラスについて説明します。

  • タイマー
    Timer を使用して、指定された時間に呼び出されるデリゲートを指定する方法を説明します。

  • Monitor
    メンバーへのアクセスの同期、または独自のスレッド管理型の構築を Monitor クラスを使用して行う方法を説明します。

  • 待機ハンドル
    WaitHandle クラスについて説明します。このクラスは、イベント待機ハンドル、ミューテックス、およびセマフォ用の抽象基本クラスで、複数の同期イベントを待機できるようにします。

  • EventWaitHandle、AutoResetEvent、CountdownEvent、および ManualResetEvent
    通知を行ったり通知を待機したりすることによりスレッドの動作を同期するために使用するマネージ イベント待機ハンドルについて説明します。

  • ミューテックス
    オブジェクトへのアクセスの同期、または独自の同期機構の構築を Mutex を使用して行う方法を説明します。

  • インタロックされた操作
    Interlocked クラスを使用して値を増減し、その値を分割不可能な 1 回の操作で格納する方法を説明します。

  • 読み取り/書き込みロック
    Single-Writer/Multiple-Reader セマンティクスを実装するロックを定義します。

  • Semaphore と SemaphoreSlim
    Semaphore オブジェクトについて説明し、このオブジェクトを使用して、制限されたリソースへのアクセスを制御する方法を示します。

  • 同期プリミティブの概要
    マネージ スレッドをロックおよび同期するために用意されている .NET Framework のクラスの機能を比較します。

  • バリア (.NET Framework)
    段階的な操作におけるスレッドの調整のためのバリア パターンを実装する Barrier オブジェクトについて説明します。

  • SpinLock
    特定の下位レベルのシナリオで Monitor クラスの代わりに軽量クラスとして使用できる SpinLock について説明します。

  • キャンセル トークン
    スレッド間の連携によるキャンセルを実装するために使用できる軽量なオブジェクトである CancellationToken について説明します。

  • SpinWait
    カーネル ベースの待機を開始する前にビジー スピンを実行する下位レベルの同期プリミティブである SpinWait について説明します。

参照

  • Thread
    Thread クラスのリファレンス ドキュメントです。このクラスは、アンマネージ コードから作成されたか、マネージ アプリケーションで作成されたかにかかわらず、マネージ スレッドを表します。

  • BackgroundWorker
    ユーザー インターフェイスと対話し、ユーザー インターフェイス スレッドで生成されるイベントを介して通信するバックグラウンド タスクを有効にします。

関連項目

  • 非同期ファイル I/O
    非同期 I/O 完了ポートでスレッド プールを使用して、入出力操作の完了時にだけ処理を要求する方法を説明します。

  • タスク並列ライブラリ
    .NET Framework Version 4 以降のマルチスレッド プログラミングで推奨される方法について説明します。