Est-ce que l'opération d'ajout de XElement thread-safe?
-
26-09-2019 - |
Question
Est-il sûr d'ajouter des éléments enfants à un XElement via sa méthode ADD de manière parallèle (comme dans un foreach parallèle)?
Merci!
Autres conseils
L'expérience récente (douloureuses) conduit à penser que moi, il est très, fil très non sûr.
J'analysé quelques fichiers de sauvegarde contenant 7,4 millions et 8,8 millions de cas de XElement indésirables supplémentaires respectivement. Mieux que je peux déterminer, ils se sont créés quand un code apparemment inoffensive impliquant la manipulation des sous-nœuds d'un XElement (y compris appeler Add () dans certains cas) se est appelé à partir de deux fils de pool de threads en même temps.
Ce n'est pas trop surprenant - XElement et les classes associées sont mises en œuvre à l'aide liée liste ressemblant à des structures, et si vous brouillez le lien fait référence à une variété de résultats étranges peut en résulter -. Boucles, des fragments non attachées, etc