2012-09-21 5 views
2

제가 C# TLS에 물건을 넣었을 때 청소가 되었습니까? 아니면 청소해야합니까?ThreadLocalStorage가 언제 청소 되나요

나는

A) 난 항상 상관없이 스레드가 주어진 작업 조각을 시작하는 방법 빈 TLS 시작되지 않습니다 (A QueueUserWorkItem 스레드, WCF 호출

, ...)

B를 의미한다)하는 경우 쓰레드가 작업을 완료 할 때 TLS에 값 비싼 것들을 넣을 것입니다. 나는 대부분의 .net 스레드가 하나 이상의 풀에서 왔다고 생각하기 때문에 '끝'이라고 말하지 않으므로 OS가 걱정되는 한 끝내지 않아도됩니다. 아니면 항상 나 자신이 내 뒤에서 난장판을 버리지 않겠다는 것을 '마침내'하는 것이 내 일이다.

답변

1

TLS 항목은 스레드가 풀에 다시 배치 될 때까지 계속 살아남습니다.

즉, System.Threading.ThreadPool 클래스의 스레드를 사용하려는 경우 TLS에 넣은 모든 내용을 정리하는 것은 사용자의 책임입니다.

+0

내가 먼저해야 할 일을 했어. 테스트 프로그램을 작성하고, 옳았 어. – pm100