Le package de synchronisation du package de langue Go fournit deux types de verrouillage : sync.Mutex et sync.RWMutex. (Recommandé pour apprendre : go)
Le Mutex est le type de verrouillage le plus simple, et il est également relativement violent. Lorsqu'une goroutine obtient le Mutex, les autres goroutines ne peuvent que se comporter. Attendez que cette goroutine libère le Mutex.
RWMutex est relativement convivial et est un modèle classique à écriture une fois, lecture multiple. Lorsque le verrou de lecture est occupé, l'écriture sera bloquée, mais la lecture ne sera pas bloquée, c'est-à-dire que plusieurs goroutines peuvent acquérir le verrou de lecture en même temps (en appelant la méthode RLock() ;
, tandis que le verrou de lecture est occupé. le verrouillage en écriture (appelant la méthode Lock()) empêchera toute autre goroutine (en lecture ou en écriture) d'entrer, le verrou entier équivaut à appartenir exclusivement à cette goroutine. Depuis l'implémentation de RWMutex, le type RWMutex combine en fait Mutex. :
type RWMutex struct { w Mutex writerSem uint32 readerSem uint32 readerCount int32 readerWait int32 }
sync.mutex Après le verrouillage, la lecture ou l'écriture à d'autres endroits est interdite Cela s'applique aux modifications possibles des mêmes données dans différentes coroutines go
L'utilisation du verrouillage et du déverrouillage dans sync.rwmutex est similaire à sync.mutexL'utilisation de rlock et runlock de sync.rwmutex convient à la lecture de données afin d'éviter les échecs de lecture causés par l'écriture dans d'autres endroits qui peuvent survenir lors de la lecture
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!