Init: (ved program start) * Sæt egen prioritet til "high" * Lav evt. et sys-tray ikon Yder-Loop: (evigt loop) * Vent 1 sekund * Lav en ny frisk opdateret liste over alle threads. (Dog uden eget program inkluderet) Inder-Loop: (vi gennemløber her listen af threads) * ... findes der to variable: Working: en bit som viser om threaden var aktiv eller ej ved sidste måling Counter: en int som tæller hvor længe Working-bitten har været uændret. * Gem den tidligere værdi som "Working" havde for denne thread (for senere at kunne sammenligne) * Mål thread'ens CPU-Working på den måde at over 25% cpu-forbrug gemmes som "1" og ellers gemmes som "0". Denne variabel gemmes i "Working". * Hvis Working er en anden værdi end sidst vi målte den pågældende thread, så resettes "Counter". Hvis Working er samme som sidst, tælles "Counter" bare 1 op. * if (working==1) { if (counter==3) { sæt prioritet til "below normal" vi ignorerer at dette kald nok vil fejle på NT4 } if (counter==20) { sæt prioritet til "idle" } } else { if (counter==5) { sæt prioritet til "normal" } } Inder-Loop slutter Yder-Loop slutter