最小工作量的goroutine

时间:2009-11-14 03:59:42

标签: parallel-processing go goroutine

是否有人知道为了使goroutine有益而需要的最小工作量是多少(假设有卸载工作的免费核心)?

4 个答案:

答案 0 :(得分:4)

goroutine是一种抽象,如果它可以帮助您更好地建模您的应用程序。您正在进行面向并发编程,因此请考虑应用程序中具有并发性的部分。

考虑一个OO系统并想象一下你是否应该实例化一个对象的问题。

首先做有意义的事情。

答案 1 :(得分:3)

我一直在和Go一起讨论项目的问题。虽然我没有给你一个明确的答案,但我发现Go文档中基于goroutine的素性筛子比简单地检查每个数字的素数要慢一个数量级。将GOMAXPROCS设置为更高的值也没有帮助。

答案 2 :(得分:1)

goroutines是轻量级的,不占用太多资源。您应该在适合问题的地方使用它们。目前go似乎并不是特别擅长使用多个内核(在分配额外的主机线程时似乎有太多的开销。)

我认为真正的问题是何时使用多个核心而不是何时使用goroutines。答案可能与其他语言和其他主机进程相同。 (遗憾的是,您无法轻松指定goroutine何时应占用新的主机进程或应占用哪个进程。)

答案 3 :(得分:1)

使用goroutines不仅仅是关于硬件效率。有时它们使软件更容易编写,并且更容易防止错误。该语言允许程序员自然而简单地表达并发性。这对我来说非常值得。

我自己对并发的自然候选问题的经验是,使用简单的“分散/聚集”方法,可以轻松地让我最大限度地利用CPU绑定问题的所有可用内核。您的里程可能会有所不同。

布袋