【发布时间】:2010-12-16 12:49:13
【问题描述】:
有没有人知道大约需要多少最小工作量才能使 goroutine 发挥作用(假设有空闲内核可以卸载工作)?
【问题讨论】:
-
您可能会在 Go 邮件列表中获得更好的答案:groups.google.com/group/golang-nuts
标签: parallel-processing go goroutine
有没有人知道大约需要多少最小工作量才能使 goroutine 发挥作用(假设有空闲内核可以卸载工作)?
【问题讨论】:
标签: parallel-processing go goroutine
我一直在用 Go 艰难地完成 euler 项目。虽然我没有给你一个明确的答案,但我发现 Go 文档中基于 goroutine 的素数筛比简单地检查每个数字的素数要慢一个数量级。将 GOMAXPROCS 设置为更高的值也无济于事。
【讨论】:
goroutine 是一种抽象,如果它可以帮助您更好地为应用程序建模,则可以使用它。您正在进行面向并发的编程,因此请考虑您的应用程序中具有并发性的部分。
考虑一个 OO 系统,并想象你是否应该实例化一个对象问同样的问题。
先做有意义的事。
【讨论】:
使用 goroutine 不仅仅关乎硬件效率。有时它们使软件更容易编写,并且更容易排除错误。该语言允许程序员自然而简单地表达并发性。这对我来说很有价值。
我自己对自然候选并发问题的经验是,通过简单的“分散/收集”方法,我可以轻松地在 CPU 绑定问题上最大限度地利用所有可用内核。您的里程可能会有所不同。
和亭
【讨论】:
goroutine 是轻量级的,不会占用太多资源。您应该在适合问题的任何地方使用它们。目前 Go 在使用多核方面似乎并不是特别好(似乎在分配额外的主机线程时开销有点太大。)
我认为真正的问题是何时使用多核而不是何时使用 goroutine。答案可能与其他语言和其他主机进程相同。 (不幸的是,你不能轻易地指定一个 goroutine 何时应该占用一个新的宿主进程或它应该占用哪个进程。)
【讨论】: