Pyl*_*nux 6
sync.Mutex
package main
import (
"fmt"
"sync"
"time"
)
var lock sync.Mutex
func main() {
go importantFunction("first")
go importantFunction("second")
time.Sleep(3 * time.Second)
}
func importantFunction(name string) {
lock.Lock()
defer lock.Unlock()
fmt.Println(name)
time.Sleep(1 * time.Second)
}
在这里,你会看到"第一"和"第二"被打印一秒钟,即使它们是常规的.
- 或者,在`lock.Lock()`之后``defer lock.Unlock()`可能更好,以防万一`importantFunction`逻辑内的恐慌.这样就可以确保"解锁"调用. (3认同)
- 没有人承诺秩序,只是他们会分开一秒钟;-) (2认同)