멀티스레드 환경에서 각 스레드가 독립적인 데이터를 가져야 할 때가 많습니다. 이때 ThreadLocal<T>를 사용하면 스레드별로 고유한 데이터를 안전하게 관리할 수 있습니다.
1. ThreadLocal<T> 개념
ThreadLocal<T>는 각 스레드마다 별도의 값이 생성되도록 해주는 제네릭 클래스입니다. 스레드마다 다른 인스턴스를 저장하고 읽을 수 있어 동기화 없이도 안전하게 값을 다룰 수 있습니다.
2. 기본 사용법
ThreadLocal<int> threadLocalData = new ThreadLocal<int>(() => 0);
var thread = new Thread(() => {
threadLocalData.Value = Thread.CurrentThread.ManagedThreadId;
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId} has value: {threadLocalData.Value}");
});
thread.Start();
thread.Join();
위 예제에서 스레드별로 threadLocalData.Value는 독립된 값을 가지게 됩니다.
3. 사용 시 주의 사항
- 스레드가 닫히면 해당 스레드의
ThreadLocal값도 사라집니다. - 메모리 누수를 막기 위해 필요 없을 때는
Dispose를 호출하는 것이 좋습니다.
간단하지만 멀티스레드 환경에서 로컬 데이터를 안전하게 관리할 수 있는 ThreadLocal<T>를 적극 활용해보세요.
'C#' 카테고리의 다른 글
| C# 비동기 스트림(IAsyncEnumerable) 처리와 응용 (0) | 2026.05.26 |
|---|---|
| C# 고급 이벤트 패턴: EventArgs 상속과 데이터 전달 (0) | 2026.05.26 |
| C# 암시적/명시적 변환 연산자(implicit/explicit) 구현하기 (0) | 2026.05.25 |
| C# 구조적 비교와 EqualityComparer<T> 커스터마이징 (0) | 2026.05.25 |
| C# 인터페이스의 기본 구현(Default Interface Implementation) 활용 (0) | 2026.05.23 |