纳秒之前,这个值都为0
if testNum==1 { //在执行完这次判断后,testNum才更新为1,此时已经没有条件进入此循环,所以此代码永远不执行
println(...1,所以不会进行下一次循环
}
println("loop end.")
}
那么,这里面又涉及到了一个新的问题:
为什么是刚好在执行完一次循环之后,才刚好轮到testNum=1,而不是在执行前之前轮转到呢...G必须绑定在M上,M必须在P上才可以运行程序,而cpu调度器执行的是P,也就是有多少核心,或者有多少个P,就可以同时运行多少个M/G
- 多个G绑定在M上,在发生syscall或者io阻塞时,会自动挂起...GMP的另一个特点:
- P可能会有多个M绑定,当M阻塞后,P将绑定其他M进行执行
- M会有多个G绑定,当一个G阻塞后,将获取一个新的G进行运行
- 如果M的G已经超出数量后,将会分一半给其他的M
-...协程运行,在刚执行的时候,由于并没有繁忙情况,所以没有启用M2和P2进行运行,所以没有实现并行
本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn