如果我有两个受互斥保护的资源,为了避免死锁,我应该按一定的顺序锁定它们。Go没有volatile关键字。那么编译器会改变这两个锁操作之间的执行顺序吗?
看看Go内存模型:
https://golang.org/ref/mem
特别是:互斥可以用来建立一个发生前的关系。如果您先锁定一个互斥体,然后再锁定另一个,那么所有goroutine都会按照这个顺序观察这些操作。
如果我有两个受互斥保护的资源,为了避免死锁,我应该按一定的顺序锁定它们。Go没有volatile关键字。那么编译器会改变这两个锁操作之间的执行顺序吗?
看看Go内存模型:
https://golang.org/ref/mem
特别是:互斥可以用来建立一个发生前的关系。如果您先锁定一个互斥体,然后再锁定另一个,那么所有goroutine都会按照这个顺序观察这些操作。
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium