go語音之進階篇多任務資源競爭問題
阿新 • • 發佈:2019-01-16
light 循環 str 定義 問題 pac 分享 ring alt
1、多任務資源競爭問題
示例:
package main import ( "fmt" "time" ) //定義一個打印機,參數為字符串,按每個字符打印 //打印機屬於公共資源 func Printer(str string) { for _, data := range str { fmt.Printf("%c", data) time.Sleep(time.Second) } fmt.Printf("\n") } func person1() { Printer("hello") } func person2() { Printer("world") } func main() { //新建2個協程,代表2個人,2個人同時使用打印機 go person1() go person2() //特地不讓主協程結束,死循環 for { } }
執行結果:
hweorllldo
程序執行過程: 一人打印一個字符,這樣就亂了。
go語音之進階篇多任務資源競爭問題