Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Richard Clark

J'aime pas les blogs mais comme j'aime le mouton...

Actualités

  • c2i.fr
Article : "Design pattern Singleton avec .Net (VB.Net et C#)" sur Developpez.com (solution?)

Marrant : hier, je venais de me pencher sur un certain problème et voilà qu'il réapparait ce matin via cet article sur Developpez.com.

A priori, il n'y a rien à redire sur cet article (qui reprends d'ailleurs volontairement ou involontairement celui de Mathieu sur Tech Head Brothers).

Pourtant, dans ces deux articles, il peut y avoir un problème (oh je sais, je suis vicieux) : saurez-vous trouver lequel ?

NB: pb insoluble en .NET 1.0 et 1.1

Alors ou est le problème ?

Tout vient des problèmes d'allocation mémoire de la CLR. En C#, on peut utiliser le mot clé volatile (qui n'existe pas en VB .NET).

D'ou une solution C# ici.

Ou alors l'API (nouvelle en 2), Thread.MemoryBarrier pour VB comme l'explique Paul Vick.

A noter la problématique différente avec les CPU x86 et AMD.

OK, c'est vicieux, mais c'est marrant parce que c'était un sujet de conversion d'hier avec l'équipe de dev de vb ;-)

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mardi 17 juillet 2007 08:08 par richardc

Commentaires

pc152 a dit :

Je n'ai pas vu le problème potentiel ;)

domage

# juillet 17, 2007 08:46

Miiitch a dit :

Personnellement j'aurais mis l'allocation de l'objet dans le constructeur statique ca évite un test à chaque appel.

# juillet 17, 2007 09:49

TheSaib a dit :

Problème d'ordonnancement des appels à cause d'un flag à la con beforefieldinit.

http://www.yoda.arachsys.com/csharp/beforefieldinit.html

# juillet 17, 2007 10:42

richardc a dit :

Ce n'est pas ce à quoi je pensais. Pour ton beforefieldInit, cela pourrait être embêtant si l'on veut maitriser l'instant de l'initialisation, mais la plupart du temps, on s'en contre tape le coquillard.

Ce à quoi je pense peut être vraiment problématique ;-)))

# juillet 17, 2007 11:02

Troborg a dit :

Pareil que Miiitch :

j'aurai mis l'allocation de l'objet dans le constructeur statique.

Pas seulement car ça évite un test à chaque fois,

mais surtout car ça évite un 1er accès concurrent qui pourrait avoir des conséquences gênantes (création de 2 objets singletons !)

Le constructeur static est appelé une fois et une seule.. Ce qui gère les accès concurrentiels.

A défaut d'utiliser le constructeur static, il faudrait ajouter un lock pour protéger l'initialisation.

# juillet 17, 2007 11:20

richardc a dit :

Petit indice: ca marche surtout pas sur les CPU d'AMD ;-)

# juillet 17, 2007 14:46

FREMYCOMPANY a dit :

Ben on peut allez vider manuellement le champs Instance via la réflection (qui n'empeche pas de modifier les champs privates si on utlise certains paramètres)

Voir : http://msdn2.microsoft.com/fr-fr/library/4ek9c21e(VS.80).aspx

# juillet 17, 2007 17:05

FREMYCOMPANY a dit :

@troborg : Ils ont mis un Synclock (2e version)

# juillet 17, 2007 17:07

RaptorXP a dit :

Moi ça m'a l'air thread safe tout ça (la 2e version avec le lock)...

# juillet 17, 2007 18:02

Troborg a dit :

Ah oui... J'avais pas vu..

(Pourtant c'est mis dans les 2 articles ! ça m'apprendra à survoler vaguement sans tout lire)

En plus la solution utilisant le constructeur static est même évoquée dans l'article de tech-head.

Bref, j'ai tout faux :)

Tant pis.

# juillet 17, 2007 18:03
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01