为了账号安全,请及时绑定邮箱和手机立即绑定

在Go中使用渠道是否对性能有好处?

在Go中使用渠道是否对性能有好处?

Go
肥皂起泡泡 2021-05-09 16:57:03
我想知道通道是否足够有效,可以用作编写Go程序的一部分。
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

Go中的通道不是函数,它们是原始类型,即所谓的语言的一等公民。

与信号量(即互斥量)相比,强烈建议使用通道,因为正确使用通道后,它们可以非常高效地序列化并发访问。

Go肯定会胜过任何解释的动态语言,并且比许多编译语言更好地处理并发。还有一些用例不足,例如在火箭控制器等中,Go仍然不够用,但对于普通的实际应用而言,Go无疑是周围最快,最灵活的语言之一。


查看完整回答
反对 回复 2021-05-17
?
DIEA

TA贡献1820条经验 获得超2个赞

一般而言,是的,频道很快,但是我们在不了解程序的情况下无法告诉您是否应该使用它。我会说这部分不是建设性的。

至于实现,将Go与源代码一起安装时可用。找个例子src/pkg/runtime/chan.c

大多数Go并发程序都依赖于渠道。如果您想用Go编写代码并执行并发任务,我会说您几乎别无选择:使用通道,配置文件,并查看是否存在与通道相关的问题。


查看完整回答
反对 回复 2021-05-17
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

您的问题很奇怪,因为很明显许多Go程序确实有效地使用了通道,因此答案是肯定的。但我认为您可能意味着:对于我的用例而言,渠道是否足够有效?如果您可以详细说明您的程序应该做什么,那么我可以给您一个更好的答案。

对于它的价值,我使用Go编写了许多高性能程序,这些程序需要在相似数量的goroutine之间进行通信的通道很多(从数十个到数百个)。是的,它们总体上效率很高。


查看完整回答
反对 回复 2021-05-17
  • 3 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信