1.5.3 关于 Goroutine内语句的执行顺序
chenjinya opened this issue · 2 comments
chenjinya commented
因此,如果在一个Goroutine中顺序执行a = 1; b = 2;两个语句,虽然在当前的Goroutine中可以认为a = 1;语句先于b = 2;语句执行,但是在另一个Goroutine中b = 2;语句可能会先于a = 1;语句执行
既然已经在goroutine A 是顺序执行了,为什么在另一个goroutine B 又不是顺序执行了?
我理解是 goroutine B 中的 b = 2;
可能会先于 goroutine A中的a=1;
语句执行 ?
chai2010 commented
A明年计划完成a和b两个任务,A也作为明年的工作计划报告给领导B了。
但是人算不如天算,中间A虽然先完成a再完成b,但是提交任的时候b先提交成功了(因为网络和各种狗血的因素),因此领导看到的是b先完成了。
当然,在明年年终总结时,A会说按照计划完成了a和b任务。
但是,没有到明年年终之前,领导B偷偷发现A的b已经完成,就私下推导A的a任务状态已经完结。
肯定是不合适的。
PS:改卷的时候,老师会根据学生的答题顺序给分吗?
chenjinya commented
哦哦哦,我理解了,您说的是goroutine相互之间的data race问题.
由于main也是一个goroutine,所以两个goroutine同时观察全局变量,出现了data race.