Разгон и торможение Windows NT

модельный ряд квантов в Windows 2000 Professional


Для экспериментов с квантами слегка модернизируем нашу тестовую утилиту, заставляя потоки (процессы) использовать отведенный им квант времени целиком. А в первичный поток встроим счетчик времени, вычисляющий продолжительность интервала между двумя соседними переключениями:

thread()

{     

       int a, b;

       while(!f) Sleep(0);

       while (f != 2);

       while(1)

       {

              for (a = 1; a< 100; a++) b = b + (b % a);

       }

}

#define defNthr      300

#define argNthr ((argc > 1)?atol(argv[1]):defNthr)



main(int argc, char **argv)

{

       int           a, zzz;

       SYSTEMTIME    st;

      

       printf("creating %d threads...", argNthr);

       for (a = 0; a < argNthr; a++)

              CreateThread(0, 0, (void*)thread, 0,0, &zzz);

      

       f = 1;  printf("OK\n");

      

       Sleep(0); f = 2;

      

       while(1)

       {

              GetSystemTime(&st);

              printf("* %02d:%02d:%02d\n",st.wHour, st.wMinute, st.wSecond);

              Sleep(0);

       }

       return 0;

}



Содержание раздела