一道看似简单的go程序的深入分析
2018-07-04 10:26
295 查看
先上代码:
运行后估计大部分电脑是死循环(cpu核数大于10的会输出结果)
8核的可能有时能输出结果:7个大于0的数和3个0
有时是死循环
原因分析:
goroutine是非抢占式的 除非主动交出控制权
goroutine可能合用一个线程
由于这两个原因导致结果是不确定的 除非cpu核数大于10
补充:
goroutine在下列情况下可能会交出控制权:
func main() { var a [10]int for i := 0; i < 10; i++ { go func(i int) { for { a[i]++ } }(i) } time.Sleep(time.Millisecond) fmt.Println(a) }
运行后估计大部分电脑是死循环(cpu核数大于10的会输出结果)
8核的可能有时能输出结果:7个大于0的数和3个0
有时是死循环
原因分析:
goroutine是非抢占式的 除非主动交出控制权
goroutine可能合用一个线程
由于这两个原因导致结果是不确定的 除非cpu核数大于10
补充:
goroutine在下列情况下可能会交出控制权:
相关文章推荐
- 深入理解计算机系统读书笔记之一个简单汇编程序的调试分析
- ARM程序由于字节对齐引起的问题深入分析
- Python源码分析2 - 一个简单的Python程序的执行
- QT最简单的程序执行过程分析(内含C++基础知识)
- 一个简单的网络验证程序的分析
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 块设备驱动之nandflash——简单程序分析
- 看!我写的关于“简单异或”加密的破解分析演示程序!
- 计算机是如何执行程序的(以汇编一个简单的C程序,分析汇编代码为例)
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
- 一个简单的时间片轮转多道程序分析
- 一个简单的时间片轮转多道程序内核代码的分析
- Go 程序的持续分析
- Android程序简单分析
- 汇编一个简单的C程序,分析代码理解计算机是怎么工作的
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 一个简单C程序的汇编代码分析
- 从一个简单的C语言程序分析计算机程序工作过程
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的--20135334赵阳林