diff --git a/homework.cs b/homework.cs index 91a7fc0..a91fb7e 100644 --- a/homework.cs +++ b/homework.cs @@ -29,7 +29,30 @@ public Task> GetBooksAsync() public async Task UpdateInventoryAsync(string title, int quantity) { await Task.Delay(100); // 模拟网络延迟 - + lock (_lock) + { + bool flag_bookfound = false; + foreach (var item in _books) + { + if (item.Title == title) + { + flag_bookfound = true; + if (item.Inventory >= quantity) + { + item.Inventory -= quantity; + Console.WriteLine($"成功购买{title}: {quantity}本"); + } + else + { + Console.WriteLine($"{title}目前仅有{item.Inventory}本,库存不足"); + } + } + } + if (!flag_bookfound) + { + Console.WriteLine($"未找到书籍:{title}"); + } + } // TODO: 使用 lock 语句保证线程安全 // 提示:在 lock 块中查找书籍并更新库存,若库存不足则输出提示 } @@ -42,6 +65,7 @@ public class BookStore // TODO: 实现异步购书方法CheckoutAsync,调用 UpdateInventoryAsync public async Task CheckoutAsync(string bookTitle, int quantity) { + await _db.UpdateInventoryAsync(bookTitle, quantity); } public async Task SimulateMultipleUsers() @@ -59,9 +83,15 @@ public async Task SimulateMultipleUsers() // 提示:创建多个 Task 调用 CheckoutAsync,并传入不同书名和数量 var tasks = new List { - + CheckoutAsync("C#入门", 2), + CheckoutAsync("C#入门", 3), + CheckoutAsync("异步编程", 1), + CheckoutAsync("异步编程", 2), + CheckoutAsync("异步编程", 3), }; + await Task.WhenAll(tasks); + Console.WriteLine("\n购买后库存:"); books = await _db.GetBooksAsync();