2011-10-18 4 views
0

나는 Threads와 함께 일하고있다. 플래그 ThreadStatic이 필요한지 확실하지 않습니다. 어쨌든 어떤 스레드에서나 간단한 부울 유형에 액세스 할 수 있습니다. 한 정도로 무엇인지 여러 스레드를 통해 작업 할 때Threadstatic 플래그가 필요하거나 없습니까?

:

Private _ImageToggle As Boolean 

또는

<ThreadStatic()> Private _ImageToggle As Boolean 

*이 마크 Gravells의 MY 해석 대답 *

각이 여러 인스턴스가있는 경우 멀티 스레딩을 사용하면 "Threadstatic"플래그가 공유 값을 사용하는 솔루션이 될 수 있습니다. 내가 기본 유형에 대한 권리를 이해했다면 절대 이해할 수 없습니다.

+1

"필요한가?"우리는 일반적으로 컨텍스트가 무엇인지에 대해 훨씬 더 자세하게 설명해야합니다. 특히 스레딩에서 "사용/소비/변경 방법은 무엇입니까?" ** 엄청나게 중요합니다 **. –

+0

Ok Marc. 내가 말할 수있는 다른 말로, 언제 그것이 필요합니까? 내 질문에 나는 스레드와 공유 값에 대한 액세스에 대해서만 말하고있다. 아마이 깃발이 중요한 상황을 아십니까? – Nasenbaer

+1

스레드 당 * 단일 값 (전체 값 하나가 아닌)이 필요할 때. 예를 들어, 각 스레드는 다른 연결/클라이언트를 나타낼 수 있습니다. 그러나 내가 언급했듯이, 나는 명시 적으로 컨텍스트 인스턴스를 가지고 있고, 필요에 따라 인스턴스를 각 스레드에 전달하기 때문에 스레드를 안전하게 안전하게 다시 사용할 수 있습니다. –

답변

2

static (VB에서는 Shared)이 아니므로 [ThreadStatic]은 아무런 효과가 없습니다. 아니; 이건 필요 없어.

정적 필드에 적용하면 [ThreadStatic]은 각 스레드가 다른 값 (기본적으로 스레드 로컬 저장소가 됨)을 말하고 있음을 의미합니다. ASP.NET 및 WCF를 포함한 비동기 기반 코드는 이어야하며 실제로는이되어야하므로 양날입니다. 일반적으로 나는이 플래그를 사용하지 않을 것입니다 - 인스턴스 멤버를 사용하여 컨텍스트로 (스레드간에) 전달하는 것이 좋습니다.

관련 문제