Informationen zur Golang-Lese-/Schreibsperre

PHPz
Freigeben: 2020-09-25 14:19:01
nach vorne
3343 Leute haben es durchsucht

Die Spalte Golang-Tutorial unten stellt Ihnen die Golang-Lese-/Schreibsperre vor. Ich hoffe, dass sie Freunden, die sie benötigen, hilfreich sein wird!

Informationen zur Golang-Lese-/Schreibsperre

golangLese-/Schreibsperre, gekennzeichnet durch

  • Lesesperre: Mehrere Coroutine-Lesevorgänge können gleichzeitig ausgeführt werden, Schreibvorgänge sind nicht zulässig.

  • Schreibsperre: Nur Eine Coroutine ist gleichzeitig zulässig. Schreibvorgänge werden ausgeführt, andere Schreibvorgänge und Lesevorgänge sind nicht zulässig.

Es gibt vier Methoden für Lese-/Schreibsperren. RLock: Lesesperre erwerben. RUnLock : Lesesperre aufheben

  • Sperren: Schreibsperre erwerben

  • UnLock: Schreibsperre aufheben

  • Nutzungsbeispiele sind wie folgt

    package main
    
    import (    "fmt"
        "sync"
        "time")var gRWLock *sync.RWMutexvar gVar intfunc init() {
        gRWLock = new(sync.RWMutex)
        gVar = 1}
    
    func main() {    var wg sync.WaitGroup
        go Read(1, &wg)
        wg.Add(1)
        go Write(1, &wg)
        wg.Add(1)
        go Read(2, &wg)
        wg.Add(1)
        go Read(3, &wg)
        wg.Add(1)
    
        wg.Wait()
    }
    
    func Read(id int, wg *sync.WaitGroup) {
        fmt.Printf("Read Coroutine: %d start\n", id)
        defer fmt.Printf("Read Coroutine: %d end\n", id)
        gRWLock.RLock()
        fmt.Printf("gVar %d\n", gVar)
        time.Sleep(time.Second)
        gRWLock.RUnlock()
    
        wg.Done()
    
    }
    
    func Write(id int, wg *sync.WaitGroup) {
        fmt.Printf("Write Coroutine: %d start\n", id)
        defer fmt.Printf("Write Coroutine: %d end\n", id)
        gRWLock.Lock()
        gVar = gVar + 100
        fmt.Printf("gVar %d\n", gVar)
        time.Sleep(time.Second)
        gRWLock.Unlock()
        wg.Done()
    
    }
    Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonInformationen zur Golang-Lese-/Schreibsperre. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage