go 协程

函数无阻塞测试

函数有阻塞测试

如果当前goroutine不发生阻塞,它是不会让出CPU给其他goroutine的, 所以例子一中的输出会是一个一个goroutine进行的,而sleep函数则阻塞掉了 当前goroutine, 当前goroutine主动让其他goroutine执行, 所以形成了逻辑上的并行, 也就是并发。

真正并行

runtime调度器

runtime调度器是个很神奇的东西,但是我真是但愿它不存在,我希望显式调度能更为自然些,多核处理默认开启。
关于runtime包几个函数:

  • Gosched 让出cpu
  • NumCPU 返回当前系统的CPU核数量
  • GOMAXPROCS 设置最大的可同时使用的CPU核数
  • Goexit 退出当前goroutine(但是defer语句会照常执行)

参考:
http://blog.csdn.net/kjfcpua/article/details/18265461

发表评论

您的电子邮箱地址不会被公开。