2011-04-30 4 views
11

모든 정적 클래스가 스레드로부터 안전하다고 작성된 msdn을 보았습니다. 그런데 그 기사는 다중 스레드 환경에서 .NET Framework를 지원 동시 액세스 내 ... 버전 1.1정적 클래스 스레드가 안전합니까?

http://msdn.microsoft.com/en-us/library/d11h6832(v=vs.71).aspx

모든 공공 정적 멤버 (메서드, 속성, 필드 및 이벤트)을 의미한다. 따라서 모든 .NET Framework 정적 멤버는 경쟁 조건, 교착 상태 또는 충돌없이 두 스레드에서 동시에 호출 할 수 있습니다.

+3

당신의 진짜 문제는 무엇 :

또한 정적 멤버 및 정적 클래스가 무엇을 이해하기 위해 이것 좀보세요? – Achim

+1

* 쓰기 가능한 멤버를 스레드로부터 안전하게 보호하는 숨겨진 마법이 CLR에 없습니다. * [here] (http://social.msdn.microsoft.com/Forums/en/clr/thread/2de53f4d-baf2-4b65)를 참조하십시오. -9d0f-82508600fc70). –

+0

@Paul Keister, 모든 정적 메서드, 속성, 필드 및 이벤트가 기사별로 스레드로부터 안전하다는 것을 의미합니다. –

답변

8

아니요, 정적 클래스가 스레드로부터 안전하다고 말하면서, 공용 정적 멤버는 스레드로부터 안전하다고 말합니다.

예를 들어 정적 메서드의 경우 매개 변수로 보내는 데이터 또는 스레드로부터 안전 한 다른 정적 멤버 만 사용한다는 의미입니다.

메서드에 보내는 데이터를 보호해야 할 필요가없는 경우 정적 메서드에 대한 호출을 동기화 할 필요가 없습니다.

11

.NET Framework 내의 모든 정적 멤버 은 스레드로부터 안전하게 설계되었습니다. 즉, Microsoft에서 .NET Framework 용으로 개발 한 모든 정적 메서드/필드/속성을 의미합니다. .NET Framework에서 제공하는 정적 멤버를 사용하려는 경우 스레드가 안전하다고 가정하고 그대로 사용하면됩니다. 나는 여전히 그 진술의 타당성을 의심 할 것이고, 그렇지 않다면 증명 될 때까지 스레드가 아닌 안전성을 가정한다.

자신이 인 정적 멤버가있는 클래스는 쓰기 방법에 따라 스레드로부터 안전 할 수도 있고 그렇지 않을 수도 있습니다. 정적 메서드/클래스이기 때문에 마술처럼 스레드로부터 안전하지는 않습니다.

Static Classes and Static Members

+0

Linked doco 404s –

관련 문제