在 C# 中,可以使用 ThreadLocal<T> 类来创建每个线程独立的全局变量。以下是一个使用 ThreadLocal<T> 的示例:

using System;
using System.Threading;

public class Program
{
    // 定义一个ThreadLocal<string>类型的全局变量
    private static ThreadLocal<string> threadLocalVariable = new ThreadLocal<string>();

    public static void Main(string[] args)
    {
        // 创建一个线程池,并启动多个线程
        for (int i = 0; i < 5; i++)
        {
            ThreadPool.QueueUserWorkItem(WorkerMethod);
        }

        // 等待所有线程完成
        Thread.Sleep(2000);

        // 获取每个线程的threadLocalVariable值
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine($'Thread {i}: {threadLocalVariable.Values[i]}');
        }
    }

    private static void WorkerMethod(object state)
    {
        // 设置当前线程的threadLocalVariable值
        threadLocalVariable.Value = 'Value set by Thread ' + Thread.CurrentThread.ManagedThreadId;

        // 模拟一些工作
        Thread.Sleep(500);

        // 访问当前线程的threadLocalVariable值
        Console.WriteLine($'Thread {Thread.CurrentThread.ManagedThreadId}: {threadLocalVariable.Value}');
    }
}

在上述示例中,通过使用 ThreadLocal<string> 类型的全局变量 threadLocalVariable,我们可以确保每个线程都持有自己的 threadLocalVariable 值。在 WorkerMethod 方法中,我们可以使用 threadLocalVariable.Value 来设置和获取当前线程的 threadLocalVariable 值。在 Main 方法中,我们启动了 5 个线程,并通过 threadLocalVariable.Values[i] 来获取每个线程的 threadLocalVariable 值。

C# 多线程中使用 ThreadLocal 创建独立全局变量

原文地址: https://www.cveoy.top/t/topic/bSBz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录