是否有人知道为了使goroutine有益而需要的最小工作量是多少(假设有卸载工作的免费核心)?
答案 0 :(得分:4)
goroutine是一种抽象,如果它可以帮助您更好地建模您的应用程序。您正在进行面向并发编程,因此请考虑应用程序中具有并发性的部分。
考虑一个OO系统并想象一下你是否应该实例化一个对象的问题。
首先做有意义的事情。
答案 1 :(得分:3)
我一直在和Go一起讨论项目的问题。虽然我没有给你一个明确的答案,但我发现Go文档中基于goroutine的素性筛子比简单地检查每个数字的素数要慢一个数量级。将GOMAXPROCS设置为更高的值也没有帮助。
答案 2 :(得分:1)
goroutines是轻量级的,不占用太多资源。您应该在适合问题的地方使用它们。目前go似乎并不是特别擅长使用多个内核(在分配额外的主机线程时似乎有太多的开销。)
我认为真正的问题是何时使用多个核心而不是何时使用goroutines。答案可能与其他语言和其他主机进程相同。 (遗憾的是,您无法轻松指定goroutine何时应占用新的主机进程或应占用哪个进程。)
答案 3 :(得分:1)
使用goroutines不仅仅是关于硬件效率。有时它们使软件更容易编写,并且更容易防止错误。该语言允许程序员自然而简单地表达并发性。这对我来说非常值得。
我自己对并发的自然候选问题的经验是,使用简单的“分散/聚集”方法,可以轻松地让我最大限度地利用CPU绑定问题的所有可用内核。您的里程可能会有所不同。
布袋