采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
比如我在代码里定义了 var a=4, 第一个请求访问a时改变了a的值,那第二个请求访问a,a的值应该还是4啊,不知道我理解的对不对。不太理解本章所说的共享内存是啥意思
共享内存指的是在并发操作下同一个内存数据被多个协程/线程共同访问。
不只是stack上的变量,heap上的也会有共享访问问题。在这种消息同步机制下,容易出现race condition,避免race condition就要加锁,无论从实现和可维护性来说都是比较低的。
共享通道是所谓的csp模型下比较优雅的实现方式,这也是go的优势,通过channel把信息同步给每个协程而不是通过读写同一个变量。建议下来找一些csp相关的内容看下
恩,你说的我基本理解了,但我还有个问题,go是多线程的语言,那我一个请求过去后 go怎么知道我是要用线程还是再开个进程,这个是哪里控制的?go 不会只用一个进程吧?
你首先要分清楚线程和进程的关系以及区别。一个go程序启动的时候永远都是一个进程。至于一个请求进来,到底是一个协程处理还是顺序阻塞式处理,那是程序实现的问题,怎么实现的就怎么处理
登录后可查看更多问答,登录/注册
从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能
1.2k 13
1.3k 8
1.4k 7
844 7
2.0k 7