你这理解严重不对。
你应该想想,假如两个 async 函数被分派到两个线程并行执行了。而它们又访问了同一个变量。要怎么办?
有四种解决方案:
1. 禁止这么干,要求必须用 channel 通讯。这是 go 的 csp 模型。
2. 禁止这么干,要求两个函数之间都带上名字,指名道姓发送消息。这是 actor 模型
3. 允许这么干,用协程线程兼容的锁。
4. 禁止协程在线程间分派。
Do not communicate by sharing memory; instead, share memory by communicating.
【 在 leadu (leadu) 的大作中提到: 】
: 跟锁没有关系,你把线程和async/await 搞混了
: async/await 的都是一堆小执行单元,各个核上的线程池随机线程挑一个task去执行。
: 即便有同步问题,一半最多也就多等个几秒钟
: ...................
--
修改:hgoldfish FROM 140.224.35.*
FROM 140.224.35.*