Go語言 之互斥鎖


package main

import (
    "fmt"
    "sync"
    "time"
)

var Mutex sync.Mutex

func Printer(s string) {
    //鎖定
    Mutex.Lock()
    for _, data := range s {
        fmt.Printf("%c ", data)
    }
    fmt.Println("")
    //解鎖
    defer Mutex.Unlock()
}

func main() {
    //創建協程
    go Printer("hello")
    go Printer("world")

    time.Sleep(time.Second * 2)
}

互斥鎖是傳統並發編程對共享資源進行訪問控制的主要手段,它由標准庫sync中的Mutex結構體類型表示。sync.Mutex類型只有兩個公開的指針方法,Lock和Unlock。Lock鎖定當前的共享資源,Unlock進行解鎖。

在使用互斥鎖時,一定要注意:對資源操作完成后,一定要解鎖,否則會出現流程執行異常,死鎖等問題。通常借助defer。鎖定后,立即使用defer語句保證互斥鎖及時解鎖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM