Bonjour à tous,
J'écris une librairie contenant une classe Date contenant une methode statique today(); qui permet de renvoyer un objet Date representant la date du jour:
J'implemente today de cette maniere: (pour des raisons de perfs je ne veux faire l'initialisation de todayd qu'une seule fois, d'où le test via un booleen today_init)
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
Maintenant ma question est la suivante : ma lib va etre appelée de l'exterieur par plusieurs threads, et en particulier Date::today() sera potentiellement appelée par plusieurs threads differents alors que l'initialisation de todayd n'est pas encore faite.
Cela risque donc de declancher plusieurs inits.
Plutot que d'utiliser un mutex couteux en perf ou de faire du code proche de celui du singleton threadsafe, je me demandais s'il ne suffit pas de forcer l'initialisation en ecrivant Date::today(); quelquepart dans le code de la librairie ?
Si je fais ca, ai-je la guarantie qu'il n'y a qu'un seul thread qui va executer mon initialisation, au chargement de la librairie, avant de passer dans le main() du programme principal et tous ses threads ? Est-ce la meilleure facon de proceder ?
Merci d'avance pour vos avis eclairés

 

 
		
		 
         
 

 
			
			



 Date::today() : initialisation thread safe d'un membre statique dans une lib
 Date::today() : initialisation thread safe d'un membre statique dans une lib
				 Répondre avec citation
  Répondre avec citation
Partager