C#에서 스레드 로컬 변수(Thread Local Variable)를 사용하면 각 스레드마다 고유한 데이터를 저장할 수 있습니다. 예를 들어, 각 스레드에서 사용자 인증 토큰, 세션 정보, 또는 사용자 환경 설정과 같은 데이터를 유지하려는 경우에 유용합니다.
1. ThreadLocal 클래스
C#에서는 System.Threading.ThreadLocal<T>
클래스를 사용하여 스레드 로컬 변수를 정의할 수 있습니다. 이 클래스는 제네릭하게 정의되어 원하는 데이터 유형에 대한 스레드 로컬 변수를 만들 수 있습니다.
ThreadLocal<int> threadLocalValue = new ThreadLocal<int>(() => 0);
위의 예제에서는 int
유형의 스레드 로컬 변수를 생성하고 기본값으로 0을 사용하도록 설정했습니다.
2. 스레드 로컬 변수 사용하기
스레드 로컬 변수의 값에 접근하려면 Value
속성을 사용합니다. 각 스레드는 고유한 인스턴스를 가지므로 다른 스레드의 스레드 로컬 변수에 접근할 수 없습니다.
int value = threadLocalValue.Value; // 현재 스레드의 스레드 로컬 변수 값 가져오기
3. 주의사항
스레드 로컬 변수를 사용할 때 주의할 점은 메모리 누수입니다. 스레드가 종료되기 전에 스레드 로컬 변수의 값을 명시적으로 해제하거나 제거하지 않으면 메모리 누수가 발생할 수 있습니다.
4. 요약
C#에서 스레드 로컬 변수를 사용하면 각 스레드마다 독립적으로 데이터를 유지할 수 있습니다. System.Threading.ThreadLocal<T>
클래스를 사용하여 스레드 로컬 변수를 정의하고, 각 스레드의 고유한 데이터를 안전하게 유지할 수 있습니다.
스레드 로컬 변수는 멀티스레드 환경에서 데이터 공유 문제를 해결하는 데 유용한 도구입니다.
참고 자료: [Microsoft Docs - ThreadLocal