不同请求来了后 同一个变量在不同的请求中是相同的吗?共享内存是指变量能通用?

来源:4-3 token bucket

pplegend

2018-08-29

比如我在代码里定义了 var a=4, 第一个请求访问a时改变了a的值,那第二个请求访问a,a的值应该还是4啊,不知道我理解的对不对。不太理解本章所说的共享内存是啥意思

写回答

1回答

艾文西

2018-08-29

共享内存指的是在并发操作下同一个内存数据被多个协程/线程共同访问。

不只是stack上的变量,heap上的也会有共享访问问题。在这种消息同步机制下,容易出现race condition,避免race condition就要加锁,无论从实现和可维护性来说都是比较低的。

共享通道是所谓的csp模型下比较优雅的实现方式,这也是go的优势,通过channel把信息同步给每个协程而不是通过读写同一个变量。建议下来找一些csp相关的内容看下

0
2
艾文西
回复
pplegend
你首先要分清楚线程和进程的关系以及区别。一个go程序启动的时候永远都是一个进程。至于一个请求进来,到底是一个协程处理还是顺序阻塞式处理,那是程序实现的问题,怎么实现的就怎么处理
2018-08-29
共2条回复

Go语言实战流媒体视频网站,高效学习Go高性能开发

从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能

996 学习 · 268 问题

查看课程