가능한 중복과 클래스의 동시 사용 :
Is the C# static constructor thread safe?정적 생성자가
나는 긴 정적 생성자를 실행과 같은 정적 클래스를 사용하여 다중 스레드를 가지고있다.
모든 스레드에서이 클래스의 동시 사용은이 스레드 중 하나에 의해 발생하는 정적 클래스 '생성자 호출이 완료된 후에 만 사용할 수 있습니까?
가능한 중복과 클래스의 동시 사용 :
Is the C# static constructor thread safe?정적 생성자가
나는 긴 정적 생성자를 실행과 같은 정적 클래스를 사용하여 다중 스레드를 가지고있다.
모든 스레드에서이 클래스의 동시 사용은이 스레드 중 하나에 의해 발생하는 정적 클래스 '생성자 호출이 완료된 후에 만 사용할 수 있습니까?
예, 물론입니다. 이것은 C# 스펙 10.12 절에서 보장됩니다. 스레드에 대해 말하는 좀 더 명시적인 비트를 찾으려고합니다.이 섹션에서는 스레드가 한 번만 실행된다는 것을 보장합니다.
일종의 "재귀 초기화"설정이있는 경우 클래스가 완전히 초기화되기 전에 코드 실행을 종료 할 수 있습니다. 두 정적 생성자가 서로 의존하면 결국 각 클래스가 다른 스레드에서 초기화되면 교착 상태가 발생합니다.
빈 정적 생성자가 있으면 정적 생성자가없는 경우 정적 초기화 생성자의 타이밍에 영향을 줄 수 있으므로 필드를 초기화 할 때 CLR에 여유가 생깁니다. (실제 동작은 시간이 지남에 따라 변경되었지만 항상 사양 내에서 변경되었습니다.) 정적 필드 초기화 프로그램에 대한 자세한 내용은 10.5.5.1 절을 참조하십시오.
기본적으로 정적 생성자는 가능한 간단하고 독립적으로 유지하십시오.