Aracılığıyla paylaş


ThreadLocal<T> Sınıf

Tanım

Verilerin iş parçacığı yerel depolama alanını sağlar.

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ür Parametreleri

T

İş parçacığı başına depolanan veri türünü belirtir.

Devralma
ThreadLocal<T>
Uygulamalar

Örnekler

Aşağıdaki örnekte nasıl kullanılacağı ThreadLocal<T>gösterilmektedir:

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)

Oluşturucular

ThreadLocal<T>()

ThreadLocal<T> Örneği başlatır.

ThreadLocal<T>(Boolean)

Örneği başlatır ve tüm değerlerin ThreadLocal<T> herhangi bir iş parçacığından erişilebilir olup olmadığını belirtir.

ThreadLocal<T>(Func<T>)

ThreadLocal<T> Örneği belirtilen valueFactory işlevle başlatır.

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

ThreadLocal<T> Örneği belirtilen valueFactory işlev ve tüm değerlerin herhangi bir iş parçacığından erişilebilir olup olmadığını gösteren bir bayrakla başlatır.

Özellikler

IsValueCreated

Geçerli iş parçacığında başlatılıp başlatılmadığını Value alır.

Value

Geçerli iş parçacığı için bu örneğin değerini alır veya ayarlar.

Values

Bu örneğe erişen tüm iş parçacıkları tarafından depolanan değerleri içeren bir liste alır.

Yöntemler

Dispose()

ThreadLocal<T> sınıfının geçerli örneği tarafından kullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

Bu ThreadLocal<T> örnek tarafından kullanılan kaynakları serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
Finalize()

Bu ThreadLocal<T> örnek tarafından kullanılan kaynakları serbest bırakır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli iş parçacığı için bu örneğin dize gösterimini oluşturur ve döndürür.

Şunlara uygulanır

İş Parçacığı Güvenliği

dışında Dispose(), tüm ortak ve korumalı üyeleri ThreadLocal<T> iş parçacığı güvenlidir ve birden çok iş parçacığından eşzamanlı olarak kullanılabilir. ve IsValueCreated özellikleri için Value döndürülen değer, özelliğine erişilen iş parçacığına özgüdür.

Ayrıca bkz.