先撇掉共享内存这个方式,我要在各个goroutine之间传递数据,除了用channel还有别的方法嘛?
还有个问题,channel稳定吗?会不会出线数据丢失的情况,因为现在的场景是这一条数据丢了就永远丢了,所以害怕高并发下大规模使用channel的话有数据丢失就麻烦了
有疑问加站长微信联系(非本文作者)

先撇掉共享内存这个方式,我要在各个goroutine之间传递数据,除了用channel还有别的方法嘛?
还有个问题,channel稳定吗?会不会出线数据丢失的情况,因为现在的场景是这一条数据丢了就永远丢了,所以害怕高并发下大规模使用channel的话有数据丢失就麻烦了
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
chan最好。可以设置缓存大小。自动组塞。不用chan就用安全列队 自己写
好的,谢谢啦
我也是新手,等等,看看有没有帮神有别人办法
没了 go没有JAVA的内存屏障模型 只有CSP
go里有一句话,要用通信来共享内存(数据),不要通过共享内存来通信。 线程之间,是因为有资源需要共享,才产生了通信 用channel耗资源更低,不要自己用内存去共享,go提供的channel非常方便
你这么一说,我好像总算理解了这句话了 “要用通信来共享内存(数据),不要通过共享内存来通信”。关键在于把前半句的内存换成数据,就好理解了。 但是数据放到channel和从channel中pop出来,应该都是走的拷贝吧?而不是引用?
channel是引用,看传参就知道了。 <- 这个符号是channel的读写,读了就pop,写了就push
context