Go语言中文网,致力于每日分享编码知识,欢迎关注我,会有意想不到的收获!

01
写在前面
过去 Web 开发的工作比较少涉及到并发的问题,每个用户请求在独立的线程里面进行,偶尔涉及到异步任务但是线程间数据同步模型非常简单,因此并未深入探究过并发这一块。最近在写游戏相关的服务端代码时发现数据的并发同步场景非常多,因此花了一点时间来探索和总结。这是一个系列文章,本文为第四篇。
本文简单介绍 Golang 中配置可用 CPU 核的方法及其可能导致的误解。
02
Golang 在单核上的“并发”问题

gotour上的乌龙案例
在浅谈 Golang 中数据的并发同步问题(三)—Map的并发问题中介绍了 Golang 并发编程中 map 类型的“脆弱”性。具体地,Golang 的运行时(runtime)会强校验并发读写的状态,如果发现有协程(goroutine)读 map 同时有其他协程读或者写同一个 map,程序就会直接异常退出。
然