מאי.13

deadlock

deadlock

יש לכתוב דוגמה של קוד ב c#

  1. public class AccountManager {
  2. Account _fromAccount;
  3. Account _toAccount;
  4. double _amountToTransfer;
  5. public AccountManager(Account fromAccount, Account toAccount, double amountToTransfer) {
  6. this._fromAccount = fromAccount;
  7. this._toAccount = toAccount;
  8. this._amountToTransfer = amountToTransfer;
  9. }
  10. public void Transfer() {
  11. lock(_fromAccount) {
  12. Thread.Sleep(1000);
  13. lock(_toAccount) {
  14. _fromAccount.Withdraw(_amountToTransfer);
  15. _toAccount.Deposit(_amountToTransfer);
  16. }
  17. }
  18. }
  19. }
  20.  
  21. public static void Main() {
  22. Account a = new Account(101, 5000);
  23. Account b = new Account(102, 3000);
  24. AccountManager mA = new AccountManager(a, b, 1000);
  25. Thread T1 = new Thread(mA.Transfer);
  26.  
  27. AccountManager mB = new AccountManager(b, a, 2000);
  28. Thread T2 = new Thread(mB.Transfer);
  29.  
  30. T1.Start();
  31. T2.Start();
  32. T1.Join();
  33. T2.Join();
  34. }

also great article can be found here: https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html


תגיות:
שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה