【发布时间】:2018-10-24 13:58:14
【问题描述】:
我知道,大多数 go 初学者都问如何拥有执行性 go-routines/并发,这点我几周前通过了。 :-)
我有一个真正的快速转码器,它使用我的 4+4 (i7 HT) CPU 的每个可用周期。它将文件读入指向结构的指针切片,对这些指针进行计算并将结果写回磁盘。我正在使用bufio。我来自 VB,所以 Go 的性能令人难以置信。
我尝试添加最少的睡眠(通过 time.Sleep()),但这大大降低了性能。
当我的转码器工作时,整个系统都滞后了。我必须将 go 任务的优先级更改为低或空闲才能再次工作。
我怎样才能实现让系统保持响应的东西?
现在我启动了数千个 go-routines(循环指针切片)。我应该限制例程的数量吗?
【问题讨论】:
-
拥有比核心更多的可运行 goroutine 并没有什么好处,所以是的:限制它们。减少 GOMAXPROCS 以限制您编程将使用的线程数和内核数。
标签: windows go concurrency goroutine