Go会改变单个goroutine中两个互斥锁的执行顺序吗



如果我有两个受互斥保护的资源,为了避免死锁,我应该按一定的顺序锁定它们。Go没有volatile关键字。那么编译器会改变这两个锁操作之间的执行顺序吗?

看看Go内存模型:

https://golang.org/ref/mem

特别是:互斥可以用来建立一个发生前的关系。如果您先锁定一个互斥体,然后再锁定另一个,那么所有goroutine都会按照这个顺序观察这些操作。

最新更新