初学者关于协程的问题请教一下

dhd040805 · 2018-05-09 10:16:26 · 1160 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-05-09 10:16:26 的主题,其中的信息可能已经有所发展或是发生改变。

image.png

//------------------------------------------------------------------------------------------------------ image.png 这两段代码,为什么前一段代码里面的方法先在协程写入数据,再在主线程for循环读取数据

然后第二段代码确是先协程读取再主线程写入~~~ 我是按照代码顺序看的 新手求指教


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1160 次点击  ∙  1 赞  
加入收藏 微博
4 回复  |  直到 2018-05-23 16:28:50
tk103331
tk103331 · #1 · 7年之前

针对无缓冲的chan,写入数据会阻塞当前协程,直到有其他协程进行读取;读取操作也是一样会阻塞当前协程,直到有其他协程写入数据。

chan的操作从逻辑上肯定是先写入才能读取。

协程执行本身是无固定顺序的,在非并行状态下,当前协程必须让出时间片(阻塞)才能执行其他协程。多核CPU可以使用runtime.GOMAXPROCS设置并行执行的数量。

dhd040805
dhd040805 · #2 · 7年之前
tk103331tk103331 #1 回复

针对无缓冲的chan,写入数据会阻塞当前协程,直到有其他协程进行读取;读取操作也是一样会阻塞当前协程,直到有其他协程写入数据。 chan的操作从逻辑上肯定是先写入才能读取。 协程执行本身是无固定顺序的,在非并行状态下,当前协程必须让出时间片(阻塞)才能执行其他协程。多核CPU可以使用runtime.GOMAXPROCS设置并行执行的数量。

多谢!!很详细的解惑

13728605342
13728605342 · #3 · 7年之前

其实这里有很详细的中文教程,可以看看 https://cloud.tencent.com/developer/doc/1101。希望对你日常的学习有帮助

dhd040805
dhd040805 · #4 · 7年之前

@13728605342 多谢 老哥

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传