2010-11-19 7 views

Antwort

9

Vom documentation:

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind thread sicher. Alle Instanzmitglieder sind nicht garantiert Thread-sicher.

Mit anderen Worten, nein, die add Methode ist nicht threadsicher.

+3

+1 - Lesen der Dokumentation ist in der Regel ein guter Anfang. –

0

Aktuelle (schmerzhafte) Erfahrung führt mich zu der Annahme, dass es sehr, sehr Thread un-sicher ist.

Ich analysierte ein paar Dump-Dateien, die 7,4 Millionen und 8,8 Millionen zusätzliche unerwünschte XElement-Instanzen enthalten. Wie ich am besten feststellen kann, wurden sie erstellt, als ein harmlos aussehender Code, der das Manipulieren der Unterknoten eines XElement (einschließlich des Aufrufs von Add() in einigen Fällen) aus zwei Thread-Pool-Threads zur gleichen Zeit aufgerufen wurde. Dieses

ist nicht allzu überraschend - XElement und die zugehörigen Klassen implementiert verketteten Liste artige Strukturen, und wenn Sie den Link verweist auf eine Vielzahl von seltsamen Ergebnissen Gerangel kann erfolgen - Schleifen, ungebunden Fragmente usw.