windows - Worker Tråd CPU-bundet

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en TCP/IP-tråd (hovedtråd), der lytter i en port. Når en TCP/IP-forespørgsel kommer, gyder jeg en tråd for at behandle anmodningen. Hvis arbejdstrådens tråd er CPU BOUND (forestil dig en sløjfe fra 1 til 1000000, der ikke gør noget), kan jeg ikke modtage en anden tcp/ip-forespørgsel. SO'en giver ikke en snittid til lyttetråden.


Hvordan kan jeg løse dette problem? Er dette et implementeringsproblem? Når tcp/ip-pakken kommer ind i tcp/ip-stakken, skal SO'en give en skive tid til lyttetråden?


Tak!

Bedste reference


Brug WinAPI-funktioner SwitchToThread() eller Sleep(0) i arbejdstrådens tråd, så det giver sin tidsskive til andre tråde/processer på systemet. Eller i Delphi, brug TThread.Yield. [4] [5] [6]