2010-01-27 4 views

Répondre

1

Oui. Aucun changement de mémoire ou de mise en cache ne se produira sous le capot.

+8

Vous faites l'hypothèse que la méthode find n'est pas active pour toutes les implémentations de la norme. Il est préférable de ne pas faire d'hypothèses en ce qui concerne C++. – JaredPar

4

Ceci est spécifique à l'implémentation et n'est pas garanti par la norme.

+0

Dans quelle implémentation cela ne fonctionnerait-il pas? – Jay

+0

Je pense que sergiom est probablement juste dans la pratique, mais comme je n'ai trouvé aucune garantie, je suppose que ce n'est pas quelque chose sur lequel nous pouvons compter. –

+0

@Jay: En principe, un conteneur peut reporter certaines tâches de nettoyage jusqu'à un accès ultérieur. Ce n'est pas parce que le conteneur est accessible logiquement que const ne garantit pas qu'il ne retournera pas certains bits (d'une manière non sécurisée) sous le capot. –

5

Le standard C++ actuel n'a rien à dire sur le sujet du threading, et ne résout donc pas ce problème. La documentation pour votre implémentation de bibliothèque standard C++ spécifique devrait cependant le couvrir.

+3

À partir de VC++ (Visual Studio 2008), en référence aux conteneurs std: un seul objet peut être lu en toute sécurité à partir de plusieurs threads. Par exemple, étant donné un objet A, il est sûr de lire A à partir du thread 1 et du thread 2 simultanément. – Permaquid