processzor időt elosztása szálak közötti

A rendszer osztja CPU idő minden aktív szálak alapján prioritási szinten, hogy a tartomány 0-31.

Az alsó szinten van fenntartva, és rendelt egy speciális rendszer menet oldal nullázás.

Amikor a rendszer csatlakozik a processzor, hogy az adatfolyam, feldolgozza áramlások azonos prioritású, mint az egyenlő (a karusszel). Miután az összes áramlás a prioritást kapnak kvantum és azzal a feltétellel, hogy azok nem igényelnek CPU, az operációs rendszer bevételt flow alacsonyabb prioritást élvez.

Van rá esély, hogy a processzor folyamatosan feldolgozza az áramot, például prioritás 31. Tehát áramlik az alacsonyabb prioritású nincs esélye, hogy csatlakozzon a processzor. Ezt a helyzetet nevezzük torlódás (éhezés - Hang).

Létrehozása áramlás relatív prioritás tétlen:

FOGANTYÚ hThread = CreateThread (NULL, 0, ThreadFunc, NULL, CREATE_SUSPENDED, dwThreadID); SetThreadPriority (hThread, THREAD_PRIORITY_IDLE); ResumeThread (hThread);

CreateThread mindig létrehoz egy szálat a relatív prioritását normális.

Rendelni relatív prioritását az üresjárati szál, akkor létre kell hozni felfüggesztett szál, átadva a zászló CREATE_SUSPENDED CreateThread, majd okoz SetThreadPriority és állítsa be a kívánt prioritást.

Szüneteltetheti és folytathatja a hullámok:

Felfüggesztheti áramlás is használhatja a hívás funkció

DWORD SuspendThread (fogantyú hThread);

amely növeli az áramlásmérő állásidőt. A siker a függvény az előző értékét tétlen számláló vagy $ FFFFFFFF.

Folytatásához az áramlás legyen egy másik téma, hogy a függvényt

DWORD ResumeThread (fogantyú hThread);

amely csökkenti az állásidőt számláló egy, és ha ez 0, az áramlás kezdődik.

Megállítani az áramlást nem lehet több, mint 127-szor.

Ezután meg kell hívni ResumeThread, és az áramlás szerepelni fog a tervezett számát. Előre megmondani, ha a szál kap CPU idő, ez lehetetlen, de az ütemező már tartja új prioritást

Egy szál lehet mondani a rendszert, hogy ne ossza CPU időt rá egy bizonyos ideig, ami:

ÉRVÉNYTELEN Sleep (DWORD dwMilliseconds);

Ez a funkció felfüggeszti a szál dwMilliseconds milliszekundum.

Okozó Sleep, áramlási önként lemond a mérleg kiosztott idő szelet.

A rendszer leáll áramlási osztja CPU idő időszakra megközelítőleg egyenlő egy előre meghatározott, mert A Windows nem egy valós idejű rendszer.

Akkor hívja a Sleep és add dwMilliseconds érték VÉGTELEN, általánosan megtiltja a tervezett áramlás.

Akkor hívja a Sleep és add dwMilliseconds nulla. Akkor adja fel a hátralévő idő szelet, és kap a rendszer kapcsolódik a processzorhoz másik szál.