这段程序用goroutine和不用的区别

image.png
如上图所示,用go 申明为gorountine前后的区别是什么呢?可以从系统资源或线程角度讲解一下吗
补充一下现象,不加gorountine,只能有一个客户端链接,这是为什么呢?
参考代码:
http://c.biancheng.net/view/5...

我理解,加go 每次有客户端链接,都用一个新协程处理。不加,使用的是main主进程,所有客户端都在以main进程里吗?感觉怪怪的

阅读 2.6k
2 个回答
我理解,加go 每次有客户端链接,都用一个新协程处理。不加,使用的是main主进程,所有客户端都在以main进程里吗?感觉怪怪的

进程 --> 线程/协程

然后你的理解是正确的。主线程阻塞后,就不能处理新的请求了。

这段代码没用go routine就不能并发了。
主线程一次只能处理一个连接,处理完关闭连接了才能接着accept下一个。
加了go routine相当于主线程对新的连接都起一个新的协程去异步处理然后能够马上accept下一个连接(如果有),这样才能达到并发

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题