Je veux dire pour certaines opérations de base, comme les lectures/écritures d'attributs de classe. Ou, peut-être, il introduit une synchronisation de niveau supérieur?.NET: CLR introduit-il automatiquement la sécurité de thread de base (verrous) pour les objets alloués par tas?
Répondre
Non, ce n'est pas le cas. Vous devez synchroniser vous-même l'accès aux objets. Les lectures/écritures individuelles de 32 bits sur une plate-forme 32 bits sont atomiques, mais cela ne signifie pas que les mises à jour d'un objet sont sécurisées par les threads.
Étant donné que la synchronisation ajoute une surcharge, l'ajout de cette valeur pour tous les objets serait probablement une pénalité importante pour les performances globales.
Non, la sécurité des filetages n'est pas garantie. Vous pouvez utiliser le mot-clé lock
sur des instances de type référence (fonctionnalité mutex simple), par exemple. Le language specification définit les opérations qui sont atomiques sans verrous.
Le nouveau .NET 4 inclut maintenant des classes thread-safe comme ConcurrentBag qui devrait faciliter l'écriture de code sans avoir à se soucier des verrous.