我的应用程序中有 12 到 13 个长时间运行的 goroutines,它们负责数千个短暂的 goroutines 来来去去。
除了定期调用 runtime.Gosched() 之外,我是否需要考虑在长时间运行的程序中做其他事情?
注意:目前那些长时间运行的程序每 15 到 30 秒(有些每隔几分钟)对资源集合执行一些监督,然后它们会休眠。
最佳答案
不,goroutine 不需要持续维护。它们由 go 运行时管理,并将继续运行直到它们返回或主 goroutine 退出。您甚至不应该调用 runtime.Gosched(),因为只有在例程不会 self 放弃但您的大部分时间都在 sleep 时才需要它。
关于parallel-processing - 长时间运行的协程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15391804/