From 924b78033c2952fd1992bd7563f8cfd1cf4c780a Mon Sep 17 00:00:00 2001 From: zyfkid Date: Sat, 30 Aug 2025 15:47:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=B1=E7=BE=BF=E5=B8=862024013216=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homework.cs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/homework.cs b/homework.cs index 91a7fc0..1e319de 100644 --- a/homework.cs +++ b/homework.cs @@ -32,6 +32,23 @@ public async Task UpdateInventoryAsync(string title, int quantity) // TODO: 使用 lock 语句保证线程安全 // 提示:在 lock 块中查找书籍并更新库存,若库存不足则输出提示 + lock (_lock) + { + var book = _books.Find(b => b.Title == title); + if (book == null) + { + Console.WriteLine($"没有《{title}》这本书"); + } + else if (quantity > book.Inventory) + { + Console.WriteLine($"《{title}》库存不足,当前库存{book.Inventory}本"); + } + else + { + book.Inventory -= quantity; + Console.WriteLine($"购买成功,《{title}》剩余库存{book.Inventory}本"); + } + } } } @@ -42,6 +59,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 +77,13 @@ 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();