- Mutex 是互斥锁。
- 0值就是 unlocked 状态的 Mutex
- Mutex 在第一次使用之后不能被复制
func(* Mutex) Lock
func (m *Mutex) Lock()
func(* Mutex) Unlock
func (m *Mutex) Unlock()
解锁已经解锁的Mutex, 运行时候报错
允许一个线程去锁,然后另外一个线程去解锁它
package main
import (
"sync"
"time"
)
// Mutex lock 可以被别的线程 unlock --------
func main() {
var mu sync.Mutex
go func() {
mu.Lock()
time.Sleep(10 * time.Second)
mu.Unlock()
}()
time.Sleep(time.Second)
mu.Unlock()
select {}
}