当前位置: 首页 > 科技观察

Go内存模型并发可见性

时间:2023-03-17 00:07:17 科技观察

TLTR协程之间的数据可见性满足HappensBefore规律,具有传递性。如果一个包p导入了一个包q,那么q的init函数的完成发生在任何p的运行开始main之前。main函数的启动发生在所有init函数完成之后go语句启动新协程发生在新协程启动之前go协程的退出不保证在任何事件之前发生sendonthechanneloccursbeforethecorrespondingchannelreceivesNonebufferChannel的接收发生在发送操作完成之前。对于容量为C的缓冲通道,来自通道的第k次接收发生在第k+C次发送完成之前。对于任何sync.Mutex或sync.RWMutex变量,并且n