关于去程go关键字的使用问题

gs272 · · 5990 次点击
我将Sleep的时间改为`time.Sleep(time.Second)`,看到了奇数和偶数显示,但是极不规律,跟书上说的差太远,不过总算有效果。 我的电脑是core i3双核,打印`runtime.NumCPU()`,显示是4?这是怎么回事?
#4
更多评论
polaris
社区,需要你我一同完善!
你在main函数开始处加上:`runtime.GOMAXPROCS(runtime.NumCPU())` 目前goroutine的调度实现的比较简单,堵塞时才会执行调度。 另外,你是看到《云动力》那本书上说:去程吧。还是直接叫goroutine吧,去程听着好别扭。呵呵
#1
package main import ( "fmt" "runtime" "time" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) go sheep(1) go sheep(2) time.Sleep(time.Millisecond) } func sheep(i int) { for ; ; i += 2 { fmt.Println(i, "只羊") } } 这样?还是不行,`runtime.GOMAXPROCS(runtime.NumCPU())`这句是什么意思啊?是不是根据cpu数量决定类似线程的数量? 确实是看了云动力这本书,就买了这本go的书,看着还行,尽量在专有名词上跟大家接轨。呵呵!
#2