من چندین تست روی سرویس Web Api و با Entity Framework انجام دادم
برای I/O مثل دیتابیس هم حالت هم زمان و هم غیرهمزمان رو تست کردم
مثلا زمان پاسخ دهی select ده هزار رکورد رو با ToListAsync و هم با ToList رو برگردوندم.
زمان پاسخ دهی همزمان که میاد و Thread Pool رو قفل میکنه شاید ۵۰۰ میلی ثانیه سریع تر از حالت غیر همزمانی بود که None Blocking هستش و عملا Cpu Load نداره!
دلیل این چیه ؟
شما باید روی سرور تست کنید نه روی لوکال
ویندوز سرور ویندوز سرور است و قابلیت های زیادی برای همروندی یا Paraller Programming دارد
async به سرعت پاسخ کاری نداره فقط به صورت موازی اجرا میکنه
به نظرتون اینکه تمام Query های دیتابیس رو (Select, Insert, Update, Delete) رو به صورت async پیاده سازی کنم و برای جوابش await کنم بهتره ؟
آیا اینکار باعث میشه که پردازنده busy wait نداشته باشه و برای دریافت پاسخ I/O منتظر یه event بمونه ؟
بله
در واقع باید aeait باشند وگر نه به مشکل میخورید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)