421Fermer423
GoldenCrystalLe 05/11/2012 à 20:46
Oui et ? tongue
Le bug que tu rencontre sans protéger tes singletons c'est pas simplement d'avoir deux valeurs sur deux threads différents…
Si le thread 1 initialise le singleton pendant que le thread 2 lit le null, puis que le thread 2 stocke le singleton juste après que le thread 1 ait retourné le singleton, le thread 1 a son singleton a lui, et la fois suivante (qui peut être « juste après ») il récupèrera (très probablement) le singleton créé par le thread 2. Donc le thread 1 a deux valeurs différentes l'une à la suite de l'autre.

Certes, Brunni n'a pas précisé si y'a un autre thread qui bidouille derrière, mais c'est le bug « courant », et ça semble l'explication la plus logique à ce problème sans plus de précision…


Quoi qu'il en soit, le mieux à utiliser reste le singleton « naturel » de C#, qui ne foire « jamais » ^^ (Et ne nécessite qu'une ligne de code tongue)