Wallet: мьютекс рядом с данными
Реализуйте Wallet с мьютексом в структуре: Deposit и Withdraw (списывает не больше баланса и возвращает списанную сумму).
Показать решение
GolangРешение
func (w *Wallet) Deposit(amount int) {
w.mu.Lock()
defer w.mu.Unlock()
w.balance += amount
}
func (w *Wallet) Withdraw(amount int) int {
w.mu.Lock()
defer w.mu.Unlock()
if amount > w.balance {
amount = w.balance
}
w.balance -= amount
return amount
}Записаться на разбор
10 000 ₽ · 60 минут · онлайн