在cpp中的多线程拼图

时间:2013-08-22 07:04:27

标签: synchronization

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...
}

1 个答案:

答案 0 :(得分:1)

在每个帐户中都有一个互斥锁。在事务之前,锁定两个互斥锁(当然,之后会释放它们)。锁定顺序很重要;为了避免死锁,您需要一个已定义的锁定顺序,例如,始终先使用最低帐号锁定帐户。