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

Ein Treffpunkt für C#-Programmierer
Guest
 Warum können Threads von Task.run in ASP.NET Core nicht wiederverwendet werden, um neue HTTP -Anforderungen zu bearbeite

Post by Guest »

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.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post