2016-06-08 1 views
0

비교 익명의 데이터 슬롯의 ThreadLocal ...ThreadLocal에서 데이터 슬롯을 사용해야하는 이유는 무엇입니까?

MSDN 만은 .NET Framework 4에서

을 말한다, 당신은 을 스레드 로컬 객체를 생성 할 System.Threading.ThreadLocal 클래스를 사용할 수 객체가 처음 소비 될 때 지연 초기화됩니다. 에 대한 자세한 내용은 지연 초기화를 참조하십시오.

게으른 초기화가 괜찮 으면 ThreadLocal이 최상의 선택 인 것 같습니다. 사용하기가 더 간단하고 캐스팅이 필요하지 않습니다. 다른 하나를 선택할 때 고려해야 할 사항이 있습니까?

+3

Windows에서 'ThreadLocal '은 스레드 로컬 데이터 슬롯 API를 사용하여 구현됩니다. Windows API 레벨에서 작업해야하는 특별한 이유가 없으면'ThreadLocal '을 사용하는 것이 좋습니다. –

답변

2

의견에서 언급했듯이 ThreadLocal<T>은 스레드 로컬 데이터 슬롯 API를 사용하여 구현됩니다. ThreadLocal source code을 보면이를 확인할 수 있습니다. Windows API 수준에서 작업해야하는 특별한 이유가 없으면 ThreadLocal<T>을 사용하는 것이 좋습니다.

ThreadLocal<T>을 선택하는 가장 좋은 이유 중 하나는 값이 모든 스레드에 대해 초기화되었는지 확인하는 것입니다. ThreadStatic은 그렇게하지 않으며 로컬 데이터 슬롯 API를 스레드하기위한 인터페이스는 특별히 코드를 작성해야합니다. 자세한 내용은 https://stackoverflow.com/a/18337158/56778을 참조하십시오.

게으른 초기화시 ThreadLocal<T>을 사용하십시오. 자신에게 많은 고통을 덜어줍니다.