Warum können Threads von Task.run in ASP.NET Core nicht wiederverwendet werden, um neue HTTP -Anforderungen zu bearbeite

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Warum können Threads von Task.run in ASP.NET Core nicht wiederverwendet werden, um neue HTTP -Anforderungen zu bearbeite

by Guest » 06 Sep 2025, 15:58

Ich erstelle eine ASP.NET -Kern -Web -API, die auf Kestrel gehostet wird. Eingehende HTTP -Anforderungen werden an den Threadpool gesendet, der einen verfügbaren Thread auswählt, um meine Controller -Aktion auszuführen. In dieser Aktion lade ich einen CPU-gebundenen oder blockierenden Operation in Task.run (...) ab, damit der ursprüngliche Anforderungs-Thread schneller zum Pool zurückkehren kann. < /P>

Code: Select all

[ApiController]
[Route("[controller]")]
public class WorkController : ControllerBase
{
[HttpGet]
public async Task Get()
{
// Simulate heavy CPU-bound work
await Task.Run(() => HeavyWork());

return Ok("Done");
}

private void HeavyWork()
{
// e.g. complex calculations, image processing, etc.
Thread.Sleep(500);
}
}
Zehn HTTP -Anforderungen kommen gleichzeitig ein.

Code: Select all

ThreadPool
verfügt jetzt über zehn kostenlose Threads, die zehn neue HTTP -Anforderungen ohne Verzögerung abholen können. Es fühlt sich an wie Threads, die von Aufgabe befreit wurden.>

Top