ThreadLocal<T> ThreadLocal<T> ThreadLocal<T> ThreadLocal<T> Class

定義

データのスレッド ローカル ストレージを提供します。Provides thread-local storage of data.

generic <typename T>
public ref class ThreadLocal : IDisposable
public class ThreadLocal<T> : IDisposable
type ThreadLocal<'T> = class
    interface IDisposable
Public Class ThreadLocal(Of T)
Implements IDisposable

型パラメーター

T

スレッドごとに格納されているデータの種類を指定します。Specifies the type of data stored per-thread.

継承
ThreadLocal<T>ThreadLocal<T>ThreadLocal<T>ThreadLocal<T>
実装

ThreadLocal<T> を使用する方法を次の例に示します。The following example shows how to use ThreadLocal<T>:

using System;
using System.Threading;
using System.Threading.Tasks;

class ThreadLocalDemo
{
    
        // Demonstrates:
        //      ThreadLocal(T) constructor
        //      ThreadLocal(T).Value
        //      One usage of ThreadLocal(T)
        static void Main()
        {
            // Thread-Local variable that yields a name for a thread
            ThreadLocal<string> ThreadName = new ThreadLocal<string>(() =>
            {
                return "Thread" + Thread.CurrentThread.ManagedThreadId;
            });

            // Action that prints out ThreadName for the current thread
            Action action = () =>
            {
                // If ThreadName.IsValueCreated is true, it means that we are not the
                // first action to run on this thread.
                bool repeat = ThreadName.IsValueCreated;

                Console.WriteLine("ThreadName = {0} {1}", ThreadName.Value, repeat ? "(repeat)" : "");
            };

            // Launch eight of them.  On 4 cores or less, you should see some repeat ThreadNames
            Parallel.Invoke(action, action, action, action, action, action, action, action);

            // Dispose when you are done
            ThreadName.Dispose();
        }
}
// This multithreading example can produce different outputs for each 'action' invocation and will vary with each run.
// Therefore, the example output will resemble but may not exactly match the following output (from a 4 core processor):
// ThreadName = Thread5 
// ThreadName = Thread6 
// ThreadName = Thread4 
// ThreadName = Thread6 (repeat)
// ThreadName = Thread1 
// ThreadName = Thread4 (repeat)
// ThreadName = Thread7 
// ThreadName = Thread5 (repeat)
Imports System.Threading
Imports System.Threading.Tasks

Module ThreadLocalDemo

    ' Demonstrates:
    ' ThreadLocal(T) constructor
    ' ThreadLocal(T).Value
    ' One usage of ThreadLocal(T)
    Sub Main()
        ' Thread-Local variable that yields a name for a thread
        Dim ThreadName As New ThreadLocal(Of String)(
            Function()
                Return "Thread" & Thread.CurrentThread.ManagedThreadId
            End Function)

        ' Action that prints out ThreadName for the current thread
        Dim action As Action =
            Sub()
                ' If ThreadName.IsValueCreated is true, it means that we are not the
                ' first action to run on this thread.
                Dim repeat As Boolean = ThreadName.IsValueCreated

                Console.WriteLine("ThreadName = {0} {1}", ThreadName.Value, If(repeat, "(repeat)", ""))
            End Sub

        ' Launch eight of them. On 4 cores or less, you should see some repeat ThreadNames
        Parallel.Invoke(action, action, action, action, action, action, action, action)

        ' Dispose when you are done
        ThreadName.Dispose()
    End Sub
End Module
' This multithreading example can produce different outputs for each 'action' invocation and will vary with each run.
' Therefore, the example output will resemble but may not exactly match the following output (from a 4 core processor):
' ThreadName = Thread5 
' ThreadName = Thread6 
' ThreadName = Thread4 
' ThreadName = Thread6 (repeat)
' ThreadName = Thread1 
' ThreadName = Thread4 (repeat)
' ThreadName = Thread7 
' ThreadName = Thread5 (repeat)    

コンストラクター

ThreadLocal<T>() ThreadLocal<T>() ThreadLocal<T>() ThreadLocal<T>()

ThreadLocal<T> インスタンスを初期化します。Initializes the ThreadLocal<T> instance.

ThreadLocal<T>(Boolean) ThreadLocal<T>(Boolean) ThreadLocal<T>(Boolean) ThreadLocal<T>(Boolean)

ThreadLocal<T> インスタンスを初期化し、すべての値がどのスレッドからもアクセスできるかどうかを指定します。Initializes the ThreadLocal<T> instance and specifies whether all values are accessible from any thread.

ThreadLocal<T>(Func<T>) ThreadLocal<T>(Func<T>) ThreadLocal<T>(Func<T>) ThreadLocal<T>(Func<T>)

valueFactory 関数を指定して、ThreadLocal<T> インスタンスを初期化します。Initializes the ThreadLocal<T> instance with the specified valueFactory function.

ThreadLocal<T>(Func<T>, Boolean) ThreadLocal<T>(Func<T>, Boolean) ThreadLocal<T>(Func<T>, Boolean) ThreadLocal<T>(Func<T>, Boolean)

指定した valueFactory 関数とすべての値がどのスレッドからもアクセスできるかどうかを示すフラグを使用して、ThreadLocal<T> インスタンスを初期化します。Initializes the ThreadLocal<T> instance with the specified valueFactory function and a flag that indicates whether all values are accessible from any thread.

プロパティ

IsValueCreated IsValueCreated IsValueCreated IsValueCreated

現在のスレッドで Value が初期化されているかどうかを取得します。Gets whether Value is initialized on the current thread.

Value Value Value Value

現在のスレッドのこのインスタンスの値を取得または設定します。Gets or sets the value of this instance for the current thread.

Values Values Values Values

このインスタンスにアクセスした全スレッドによって現在格納されているすべての値のリストを取得します。Gets a list for all of the values currently stored by all of the threads that have accessed this instance.

メソッド

Dispose() Dispose() Dispose() Dispose()

ThreadLocal<T> クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。Releases all resources used by the current instance of the ThreadLocal<T> class.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

この ThreadLocal<T> インスタンスによって使用されているリソースを解放します。Releases the resources used by this ThreadLocal<T> instance.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize() Finalize() Finalize() Finalize()

この ThreadLocal<T> インスタンスによって使用されているリソースを解放します。Releases the resources used by this ThreadLocal<T> instance.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のスレッドのこのインスタンスの文字列形式を作成して返します。Creates and returns a string representation of this instance for the current thread.

適用対象

スレッド セーフ

例外としてDispose()、すべてのパブリックのプロテクト メンバーとThreadLocal<T>スレッド セーフでは、複数のスレッドから同時に使用される可能性があります。With the exception of Dispose(), all public and protected members of ThreadLocal<T> are thread-safe and may be used concurrently from multiple threads. 返される値、ValueIsValueCreatedプロパティがプロパティにアクセスするスレッドを特定します。The value returned for the Value and IsValueCreated properties is specific for the thread on which the property is accessed.

こちらもご覧ください