我想知道通道是否足够有效,可以用作编写Go程序的一部分。
答案 0 :(得分:8)
Go中的频道不是函数,它们是原始类型,是所谓的一流语言公民。
与信号量(又称互斥锁)相比,强烈建议使用通道,因为如果使用正确,它们可以非常有效地序列化并发访问。
Go肯定会胜过任何解释的动态语言,并且比许多编译语言更好地处理并发方式。还有一些用例Go不够用,比如火箭控制器等,但对于普通的实际应用程序,Go肯定是最快,最灵活的语言之一。答案 1 :(得分:3)
一般来说,是的,渠道很快,但我们不知道你是否应该在不知道你的程序的情况下使用它。我要说这部分不具有建设性。
关于实现,当您使用源安装Go时,它可用。在src/pkg/runtime/chan.c
查找例子。
大多数Go并发程序都依赖于渠道。如果你想在Go中编写并执行并发任务,我会说你几乎没有选择:使用频道,个人资料,看看你是否有与频道相关的问题。
答案 2 :(得分:0)
你的问题很奇怪,因为很明显很多Go程序确实有效地使用了频道,所以答案绝对是肯定的。但我认为你的意思是:渠道是否足够有效我的用例。如果你能详细说明你的程序应该做什么,那么我可以给你一个更好的答案。
对于它的价值,我已经使用Go编写了大量高性能程序,这些程序需要通过相似数量的goroutine进行通信的大量通道(从数十个到数百个)。所以是的,一般来说它们非常有效。