C# ThreadLocal 局部变量
时间: 2024-09-24 20:27:56 浏览: 46
C#警惕匿名方法造成的变量共享实例分析
C# 中的 `ThreadLocal<T>` 类是一种特殊的线程局部存储(Thread Local Storage,TLS)类型,它允许你在每个线程上保存单个实例的变量,而不是在整个应用程序或所有线程之间共享。`ThreadLocal`的主要特性包括:
1. **线程绑定**:每个线程都有自己的 `ThreadLocal` 变量副本,这意味着在不同的线程中,同一个 `ThreadLocal` 对象会返回不同的实例。
2. **自动管理**:`ThreadLocal` 的实例会在当前线程结束时自动回收,无需显式关闭或清理。
3. **简洁高效**:由于 `ThreadLocal` 是针对每个线程的,所以在多线程环境下不需要额外的同步措施来保护变量,提高了性能。
4. **示例使用**:你可以像下面这样创建和使用 `ThreadLocal`:
```csharp
private static readonly ThreadLocal<int> MyCounter = new ThreadLocal<int>(() => 0);
public void Increment() {
MyCounter.Value++;
}
```
在这里,`MyCounter.Value` 总是在当前线程中递增,而不会影响其他线程。
阅读全文