go語言之進階篇多任務資源競爭問題


 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

 

程序執行過程:  一人打印一個字符,這樣就亂了。

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com