Mutex
用途: 排它锁, 有锁定和未锁定状态, 当处于锁定状态时, 其它尝试进行的锁定操作都被等待,直到解锁
package main
import (
"fmt"
"sync"
"time"
)
var m *sync.Mutex
func main() {
m = new(sync.Mutex)
go lock(1)
time.Sleep(time.Second)
lock(2)
fmt.Printf("%s\n", "exit!")
}
func lock(i int) {
println(i, "lock start")
m.Lock()
println(i, "lock")
time.Sleep(10 * time.Second)
m.Unlock()
println(i, "unlock")
}