Il existe trois façons d'implémenter le mode singleton dans Golang : le mode paresseux, le mode affamé et le mode double vérification. Ensuite, nous présenterons en détail ces trois méthodes d’implémentation et fournirons des exemples de code spécifiques.
1. Mode paresseux
Le mode paresseux signifie créer une instance singleton uniquement lorsqu'elle est appelée pour la première fois. Voici un exemple de code du mode paresseux :
package singleton import ( "sync" ) type Singleton struct { } var instance *Singleton var once sync.Once func GetInstance() *Singleton { once.Do(func() { instance = &Singleton{} }) return instance }
Dans ce code, la fonction GetInstance transmet le package de synchronisation. . La structure Once garantit qu'une instance n'est créée que lors du premier appel. Lors de la mise en œuvre du mode paresseux, vous devez faire attention à la sécurité de la concurrence.
2. Mode Hungry Man
Le mode Hungry Man signifie créer une instance singleton au démarrage du programme. Voici un exemple de code du mode Hungry Man :
package singleton type Singleton struct { } var instance *Singleton = &Singleton{} func GetInstance() *Singleton { return instance }
Dans ce code, l'instance est créée lorsque le programme démarre la création. Puisque la fonction init du langage Go est automatiquement appelée lors de l'importation du package, le mode faim peut être réalisé.
3. Verrouillage à double vérification
Le mode à double vérification est un moyen d'optimiser en fonction du mode paresseux et réalise le singleton du mode paresseux grâce à une double vérification. Voici un exemple de code du mode double vérification :
package singleton import "sync" type Singleton struct { } var instance *Singleton var mu sync.Mutex func GetInstance() *Singleton { if instance == nil { mu.Lock() defer mu.Unlock() if instance == nil { instance = &Singleton{} } } return instance }
Dans ce code, sync.Mutex est utilisé pour garantir la sécurité de la concurrence, et la double vérification est utilisée pour implémenter le mode singleton en mode paresseux.
Ci-dessus sont les trois méthodes d'implémentation du mode singleton dans Golang : le mode paresseux, le mode affamé et le mode double vérification. Choisissez une méthode d'implémentation appropriée pour implémenter le modèle singleton en fonction des besoins réels et des exigences de performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!