C# 多线程中使用 ThreadLocal 创建独立全局变量
在 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 值。
原文地址: https://www.cveoy.top/t/topic/bSBz 著作权归作者所有。请勿转载和采集!