初级会员
  • 第 37029 位会员
  • SONHOUTEI
  • 2019-05-17 16:39:28
  • Offline
  • 20 50

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了博文 正确使用Go的Timer
    直接使用ticker会更好
  • 评论了主题 怎么设置gopath
    请把你的详细设置步骤说一下
  • 1.如果不加条件变量设置的话,两个协程是没法确认谁先收到的。而且一个收到以后另一个必定会阻塞。你可以让代码按照顺序正确执行,但是你是无法控制go的调度器的,所以这个你是没法确认的。在非缓存channel中,发送方向channel里面发送一个值,channel会把这个值的备份发给channel的接收方,而且接收方一定会在发送方结束之前接收到这个值的副本。 2.如果你想控制它的顺序,理论上可以加一个信号控制的channel。也可以使用select,但是使用select在你这里会造成错误。 3.你写的代码存在一些低级的错误,麻烦以后确认好了再发给大家。
  • #3 @zxmin 你还是没理解go协程之间的通信问题,以及go核心的并发编程原理。如果可以,你可以留个联系方式,我给你说说这一块
  • 首先第一点你要先明白,slice和chan并不是同样的东西。 slice是一个可变长度的数组,数组是一个容器,是用来存储数据用的。 chan是管道,管道并不是存储数据用的,管道是为了grounite之间通信用的。 chan分为缓存chan,和非缓存chan,你上面定义的是缓存chan所以表面上看起来你可以往里存数据而不会造成阻塞, 你如果定义一个非缓存chan你就会明白,如果往非缓存chan存数据而不立马取出就会立马阻塞。