0
点赞
收藏
分享

微信扫一扫

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语句保证互斥锁及时解锁。




举报

相关推荐

0 条评论