当前位置:  开发笔记 > 编程语言 > 正文

time.Sleep()会产生其他goroutines吗?

如何解决《time.Sleep()会产生其他goroutines吗?》经验,为你挑选了1个好方法。

在Go中,是否调用time.Sleep()会产生其他goroutines?我有一种感觉,但在其他答案中(例如:了解goroutines)time.Sleep未明确列为调度点.



1> ferhat elmas..:

是.请参阅调度程序中的抢占.

在以前的版本中,永远循环的goroutine可能会在同一个线程上饿死其他goroutine,这是GOMAXPROCS只提供一个用户线程时的一个严重问题.在Go 1.2中,部分解决了这个问题:在进入函数时偶尔会调用调度程序.这意味着任何包含(非内联)函数调用的循环都可以被抢占,允许其他goroutine在同一个线程上运行.

以下设计文档也是很好的读取,以了解有关调度程序的更多信息:

可扩展的Go Scheduler设计文档

Go Preemptive Scheduler Design Doc

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有