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认同)