每日一道 Go 編程題

 非常非常有意思的一道編程題

package main
import (
	"fmt"
	"sync"
	"time"
)
var mu sync.RWMutex
var count int
func main() {
	go A()
	time.Sleep(2 * time.Second)
	mu.Lock()
	defer mu.Unlock()
	count++
	fmt.Println(count)
}
func A() {
	mu.RLock()
	defer mu.RUnlock()
	B()
}
func B() {
	time.Sleep(5 * time.Second)
	C()
}
func C() {
	mu.RLock()
	defer mu.RUnlock()
}

大家可以在下面評論留言,留下結果  稍後會加上對這段代碼的解釋

其它的情況:

  • 將func B() 的sleep時間變爲0 系統會有什麼結果?
  • 將func B() 的sleep時間變爲2 系統會有什麼結果?
  • 將main() 函數中的sleep時間變爲0會有什麼結果?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章