В «Языке программирования * 1021», Алан Донован, стр. 264, он использует мьютекс для чтения целого числа.
Я не понимаю, почему, так как целое число помещается в одно слово, поэтому оно не может быть разорванным чтением.
Я, наверное, не прав, но как? Спасибо.
--- Обновление с кодом ---
func Balance() int {
mu.Lock()
defer mu.Unlock()
return balance
}
Затем вниз по странице
func Withdraw(amount int) bool {
Deposit(-amount)
if Balance() < 0 {
Deposit(amount)
return false // insufficient funds
}
}
Этот дизайн позволяет балансу стать недействительным, что может быть наблюдаемый читателем, который затем фиксируется в книге с блокировкой в Withdraw()
fun c.
Извинения действительно, я думаю, что я потратил впустую время каждого :( Я заставил всех не отвечать на этот вопрос правильно .
Моя теория состоит в том, что если бы переменная balance
была проверена (под замком), что есть достаточные средства, прежде чем она мутирует, то блокировка в Balance()
fun c не понадобится, но я все еще могу ошибаться, тем более что люди упоминают о переупорядочении, которое является чем-то загадочным.