溫馨提示×

c# threadlocal能用于靜態字段嗎

c#
小樊
93
2024-11-27 13:54:26
欄目: 編程語言

是的,C# ThreadLocal 可以用于靜態字段。ThreadLocal<T> 類允許您為每個線程存儲一個獨立的值副本。當您將 ThreadLocal<T> 應用于靜態字段時,每個線程都將具有其自己的靜態字段副本。

以下是一個使用 ThreadLocal<T> 的靜態字段的示例:

using System;
using System.Threading;

public class MyClass
{
    // 使用 ThreadLocal<T> 靜態字段
    private static readonly ThreadLocal<int> _threadLocalValue = new ThreadLocal<int>();

    public static void SetValue(int value)
    {
        _threadLocalValue.Value = value;
    }

    public static int GetValue()
    {
        return _threadLocalValue.Value;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 設置線程局部變量的值
        MyClass.SetValue(10);

        // 在同一線程中獲取值
        Console.WriteLine("Main thread value: " + MyClass.GetValue());

        // 創建一個新線程
        Thread newThread = new Thread(() =>
        {
            // 在新線程中設置值
            MyClass.SetValue(20);

            // 在新線程中獲取值
            Console.WriteLine("New thread value: " + MyClass.GetValue());
        });

        newThread.Start();
        newThread.Join();
    }
}

輸出:

Main thread value: 10
New thread value: 20

在這個示例中,我們有一個名為 MyClass 的類,它具有一個靜態 ThreadLocal<int> 字段 _threadLocalValue。我們提供了 SetValueGetValue 方法來設置和獲取線程局部變量的值。在 Main 方法中,我們設置了一個值并在同一線程中獲取它。然后我們創建了一個新線程,在該線程中設置了另一個值并獲取了它。請注意,每個線程都有其自己的 _threadLocalValue 副本,因此主線程和新線程中的值是獨立的。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女