vbkaar
سه شنبه 24 دی 1398, 16:22 عصر
سلام.این اکشن رو در نظر بگیرید
int count = 0;
public async Task<IActionResult> TestLock()
{
await Task.Delay(10000);
++count;
return Ok(count);
}
من با تستی که انجام دادم متوجه شدم بعد از فراخوانی این اکشن، وقتی در یک تب دیگه در مرورگر این اکشن رو فراخوانی میکنم ، منتظر میمونه تا اجرای اکشن قبلی تموم بشه بعد اجرا میشه. یعنی اولین اجرا 10 ثانیه و دومین اجرا 20 ثانیه طول میکشه. این در حالی هست که اکشن های دیگه در دسترس هستن. میخواستم اگه میشه برام توضیح بدید این موضوع رو. این مساله در کل برنامه و برای تمام کلاینت ها این طوری هست. یا فقط یک کاربر. در واقع من وقتی به این موضوع برخوردم که برام مهم بود در یک اکشن race بوجود نیاد. اولش درگیر مساله لاک کردن و اینجور چیزا شدم. ولی با دیدن این عملکر یک مقدار گیج شدم. یعنی asp.net core در هر لحظه فقط یک درخواست به یک اکشن رو اجرا میکنه؟ لطفا من رو راهنمایی کنید.
int count = 0;
public async Task<IActionResult> TestLock()
{
await Task.Delay(10000);
++count;
return Ok(count);
}
من با تستی که انجام دادم متوجه شدم بعد از فراخوانی این اکشن، وقتی در یک تب دیگه در مرورگر این اکشن رو فراخوانی میکنم ، منتظر میمونه تا اجرای اکشن قبلی تموم بشه بعد اجرا میشه. یعنی اولین اجرا 10 ثانیه و دومین اجرا 20 ثانیه طول میکشه. این در حالی هست که اکشن های دیگه در دسترس هستن. میخواستم اگه میشه برام توضیح بدید این موضوع رو. این مساله در کل برنامه و برای تمام کلاینت ها این طوری هست. یا فقط یک کاربر. در واقع من وقتی به این موضوع برخوردم که برام مهم بود در یک اکشن race بوجود نیاد. اولش درگیر مساله لاک کردن و اینجور چیزا شدم. ولی با دیدن این عملکر یک مقدار گیج شدم. یعنی asp.net core در هر لحظه فقط یک درخواست به یک اکشن رو اجرا میکنه؟ لطفا من رو راهنمایی کنید.