#include <process.h>
#include <sysutils.hpp>
#include <stdio.h>
int glob,s;
void thr(void* pParams)
{
for(;;)
{
glob++;
Sleep(50);
if(glob==1000)
{
s=1;
break;
}
}
}
main()
{
_beginthread(thr,1024,NULL);
for(;;)
{
printf("%d\n",glob);
if(s==1)break;
}
}
Потоки и загрузка процессора
http://izone.kiev.ua/articles/cpp/17/97.htm
статью ,решил попытатся попрактиковатся с потоками.Начал с самого простого кода который пришол в голову
Запускаю.Заглядываю в диспетчер задач.И у меня шок :eek: Сама по себе эта программа судя по диспетчеру дает нагрузку на камень от 3 до 10 % ,а вот csrss.exe 30-40 :eek: Обьясните пожалуйста чайнику в чем тут прикол :confused:
ЗЫ:камень атлон Х2 3600+ (разогнан до 2.5ГГц)
Прочитав эту
статью ,решил попытатся попрактиковатся с потоками.Начал с самого простого кода который пришол в голову
Код:
Запускаю.Заглядываю в диспетчер задач.И у меня шок :eek: Сама по себе эта программа судя по диспетчеру дает нагрузку на камень от 3 до 10 % ,а вот csrss.exe 30-40 :eek: Обьясните пожалуйста чайнику в чем тут прикол :confused:
ЗЫ:камень атлон Х2 3600+ (разогнан до 2.5ГГц)
Csrss занимает процессорное время, потому что прога много выводит в консоль, а csrss занимается перерисовкой этого консольного окна; а у самой проги один поток выводит в консоль - это загружает csrss, а в другом потоке есть Sleep, поэтому он тоже мало загружает процессор.
Цитата: Somebody
Csrss занимает процессорное время, потому что прога много выводит в консоль, а csrss занимается перерисовкой этого консольного окна; а у самой проги один поток выводит в консоль - это загружает csrss, а в другом потоке есть Sleep, поэтому он тоже мало загружает процессор.
Чепуха ,если выполнить такой вот код
Код:
main()
{
int glob;
for(;;)
{
glob++;
Sleep(10);
printf("%d\n",glob);
}
}
{
int glob;
for(;;)
{
glob++;
Sleep(10);
printf("%d\n",glob);
}
}
то загрузка у csrss.exe 0 Причем здесь тогда перерисовка консоли? Дело в потоке :(
printf("%d\n",glob);
в первом варианте вашей программы команду
Sleep(50);
наверняка поймёте, что Somebody был прав.
Цитата: _nic
Чепуха ,если выполнить такой вот код
то загрузка у csrss.exe 0 Причем здесь тогда перерисовка консоли? Дело в потоке :(
Код:
main()
{
int glob;
for(;;)
{
glob++;
Sleep(10);
printf("%d\n",glob);
}
}
{
int glob;
for(;;)
{
glob++;
Sleep(10);
printf("%d\n",glob);
}
}
то загрузка у csrss.exe 0 Причем здесь тогда перерисовка консоли? Дело в потоке :(
Нет, не чепуха. Чтобы csrss перерисовывал раз в 10, даже 10 с чем-то, миллисекунд - много процессорного времени не надо. А если убрать Sleep - это уже другое дело.