Utilisez des génériques pour résoudre les problèmes de concurrence dans Golang. Les génériques permettent de définir des fonctions et des structures sans spécifier de type, créant ainsi des structures de données thread-safe. Par exemple : définissez une file d'attente générique Queue[T], où T représente le type d'élément. Utilisez sync.Mutex pour protéger la file d'attente des accès simultanés. Ajoutez et supprimez en toute sécurité des éléments de la file d'attente à l'aide des méthodes Push() et Pop(). Utilisez cet exemple de file d’attente dans la fonction principale.
Comment utiliser les génériques pour résoudre des problèmes de programmation concurrente dans Golang
Les génériques nous permettent de définir des fonctions et des structures sans spécifier de types spécifiques. Cela nous permet de créer un code plus flexible et réutilisable.
Les problèmes de concurrence dans Golang impliquent généralement un accès simultané aux ressources partagées. Nous pouvons utiliser des génériques pour créer des structures de données thread-safe afin d'éviter les courses de données et les blocages.
Code :
import ( "sync" ) type Queue[T any] struct { items []T lock sync.Mutex } func (q *Queue[T]) Push(item T) { q.lock.Lock() defer q.lock.Unlock() q.items = append(q.items, item) } func (q *Queue[T]) Pop() (item T, ok bool) { q.lock.Lock() defer q.lock.Unlock() if len(q.items) == 0 { return item, false } item = q.items[0] q.items = q.items[1:] return item, true }
Exemple d'utilisation :
import "golang_泛型学习/泛型并发编程" func main() { queue := 泛型并发编程.Queue[int]{} queue.Push(1) queue.Push(2) for { item, ok := queue.Pop() if !ok { break } fmt.Println(item) } }
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!