windows - giver WaitForSingleObject en tråds tidsskive?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg laver et win32-program i C.


Når du har flere tråde kørende, og en af ​​tråderne venter på en begivenhed (f.eks. Ved hjælp af WaitForSingleObject(), får den tråd stadig sin fulde CPU-tidsskive?


Angives forskelligt, ved operativsystemet, at tråden ikke behøver sin tidsskive, indtil en af ​​begivenhederne er signaleret?

Bedste reference


Ja - tråden er blokeret, indtil det er venter på det, der bliver signaleret. Tråden vil ikke blive kørt, mens den er blokeret, så andre tråde får hele CPU-tiden.


Bemærk, at tidsskiver ikke går ind i det meget. En tråd kan give op på udførelsen midt i et tidsskive, og (for eksempel) hvis det, der venter på bliver signaleret hurtigt, kan det begynde at køre igen før dets oprindelige tidsskive udløber. Når noget er signaleret, kan en tråd, der venter på det, vågne op straks , ikke nødvendigvis vente på slutningen af ​​et tidsskive (f.eks. Hvis den tråd, der ventede, har højere prioritet end tråden der kørte).

Andre referencer 1


Hvis genstanden du venter på ikke allerede er signaleret, vil tråden give resten af ​​sin tidsslip og gå i seng, indtil objektet er signaleret.