我们知道当创建大量goroutine,goroutine中任务是对同一个map进行读写时,程序会崩溃,无法执行,也就是map线程不安全。但如果设置逻辑处理器为1的话,还会有这样问题吗?
![image.png](https://static.studygolang.com/190524/48b40b06eba738aad1ca0879049d76e7.png)
这是go语言实战里的图,G*代表协程,我在想,如果就一个线程的话,G*之间永远不会同一时间被调度,那还用锁干什么?
#2
更多评论
goroutine 并不是挨个执行完的,之间会有调度,可能会在执行期间被打断,就可能造成多个goroutine访问 map这个共享变量,所以会造成并发写的panic吧。
#3