void BalanceTransfer(Account &FromAccount, Account &ToAccount, double amount)
{
FromAccount.Substract(amount);
ToAccount.Add(amount);
//What is the best way to protect this function if there are 100 threads calling this function for 1000's of accounts...
}
答案 0 :(得分:1)
在每个帐户中都有一个互斥锁。在事务之前,锁定两个互斥锁(当然,之后会释放它们)。锁定顺序很重要;为了避免死锁,您需要一个已定义的锁定顺序,例如,始终先使用最低帐号锁定帐户。