GoLang之channel常见问题总结

  • Post author:
  • Post category:golang




GoLang之channel常见问题总结



1.有缓存和无缓存channel的区别


直面上:


有缓冲的channel是带有缓冲区的;

无缓冲的channel是没有有缓冲区。


工作方式上:


无缓存的channel是同步的,同步的意思是当前这个协程A往通道中放数据,必须等到别的协程B去取数据了,A才能放,否者就要一直阻塞等待,发送和接收动作是同时发生的;

有缓冲的channel在通道中的缓存没有全满,即不是全空的情况下,是非同步的;在缓冲区全空的时候,对于读通道的协程是同步的,写通道是非同步的;在缓冲区全满的时候,对于写通道的协程是同步的,读通道是非同步的。​



版权声明:本文为weixin_52690231原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。