ADE 메서드를 통해 병렬 요소 (예 : 병렬 foreach)에서 자식 요소를 XElement에 추가하는 것이 안전합니까?XElement의 추가 작업은 스레드 안전입니까?
감사합니다. documentation에서
ADE 메서드를 통해 병렬 요소 (예 : 병렬 foreach)에서 자식 요소를 XElement에 추가하는 것이 안전합니까?XElement의 추가 작업은 스레드 안전입니까?
감사합니다. documentation에서
:이 유형의 멤버 (비주얼 Basic의 경우 Shared)
모든 공용 static 스레드 안전합니다. 모든 인스턴스 구성원은 스레드 안전성이 보장 된 이 아닙니다.
즉, 아니요, add
메서드는 스레드로부터 안전하지 않습니다.
최근의 (아픈) 경험으로 인해 나는 그것이 매우 안전하다고 생각하게 만듭니다.
나는 각각 7.4 백만과 880 만개의 여분의 원치 않는 XElement 인스턴스를 포함하는 몇 개의 덤프 파일을 분석했다. XElement의 하위 노드 (일부 경우 Add() 호출 포함)를 조작하는 무해한 코드가 동시에 두 개의 스레드 풀 스레드에서 호출 될 때 생성 된 것입니다. XElement를 및 관련 클래스는 연결된 목록과 같은 구조를 사용하여 구현하고, 당신이 출격 경우 링크는 계속 일어날 수있는 이상한 결과의 다양한 참조 - -
이 너무 놀라운 일이 아니다 루프, 무소속 조각 등을
+1 - 일반적으로 문서를 읽는 것이 좋습니다. –