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)?L'opération d'ajout de XElement Thread Safe?
Merci!
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)?L'opération d'ajout de XElement Thread Safe?
Merci!
De l'documentation:
statiques publics (en Visual Basic) de ce type sont thread sûr. Tous les membres d'instance ne sont pas garanti être thread-safe.
En d'autres termes, non, la méthode add
n'est pas adaptée aux threads.
Une expérience récente (douloureuse) m'amène à penser que c'est très, TRÈS mauvais thread.
J'ai analysé un couple de fichiers de vidage contenant 7.4 millions et 8,8 millions d'instances XElement indésirables supplémentaires respectivement. Le mieux que je puisse déterminer, ils ont été créés quand un code anodin impliquant la manipulation des sous-nœuds d'un XElement (y compris l'appel de Add() dans certains cas) a été appelé à partir de deux threads de pool de threads en même temps.
Ce n'est pas trop surprenant - XElement et les classes associées sont mises en œuvre en utilisant des structures liées-type liste, et si vous brouillez le lien fait référence à une variété de résultats étranges peuvent en résulter - des boucles, des fragments non attachées, etc.
+1 - lire la documentation est généralement un bon début. –