|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.05.2012, 12:47 | #1 |
Пользователь
Регистрация: 01.05.2012
Сообщений: 23
|
while грузит процессор
Чтото изменил в настройках или скрипте, но циклы while, for стали оч сильно грузить проц, до этого нагрузка была нулевой, не могу понять что изменилось с прошлого раза)
|
06.05.2012, 13:00 | #2 |
Регистрация: 27.01.2012
Сообщений: 9
|
Может быть изменилось то, что вы изменили?
Выражение "разбить винчестер" не обещает Вам увидеть Вашего Админа, молотящего ружьем об дерево.
|
06.05.2012, 13:34 | #3 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
07.05.2012, 06:48 | #4 |
Пользователь
Регистрация: 01.05.2012
Сообщений: 23
|
Стал) Сейчас простой цикл while(true){cout<<"!";} уже подгружает проц, до этого такого не наблюдал, копался в подключаемых либах, вроде ничего особенного не делал более.
|
07.05.2012, 07:49 | #5 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
попробуй что то типа:
Код:
|
07.05.2012, 07:58 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Тут же никакой задержки нет. Конечно он будет грузить проц на все 80
I'm learning to live...
|
|
07.05.2012, 09:53 | #7 |
Пользователь
Регистрация: 01.05.2012
Сообщений: 23
|
|
07.05.2012, 17:11 | #8 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Поэтому, могу и ошибаться... Всякие там Виндовсы/Линуксы, как ты знаешь - многозадачные системы. Это означает, что в памяти компьютера могут быть загружены и одновременно работать сразу несколько программок. Однако единовременно на одном ядрышке исполняться может только один кусочек кода. Поэтому, допустим на одноядерной машине такая многозадачность фиктивная. На самом деле все эти программки исполняются не одновременно, а по очереди: чуть чуть поработала одна, уснула. Проснулась следующая, поработала - тоже уснула. Внешне создаётся впечатление, что они работают одновременно. Каждая такая программка - это отдельный "процесс". Причем у одного приложения может быть несколько процессов. А процессы могут иметь несколько потоков. Суть в том, что у каждого такого процесса (или потока) есть его квант времени. Когда он истекает - операционная система передаёт управление другому процессу(потоку). Получается, что процесс "проснулся" и начал выполнять работу (нагружает проц и тп). Потом его время истекает, и он "засыпает". Sleep() указывает системе, что твой поток должен уснуть на некоторое количество миллисекунд. И пока таймер не истечет - поток не будет просыпаться, и нагружать проц. Если тебе нужно осуществить задержку, то ты делаешь слип, и у других процессов в системе появляется возможность спокойно работать. Твой процесс как бы отдаёт им своё время. В данном случае задержка на 10 милисек - это очень мало для человека (1000 милисек - это 1 секунда), но почти вечность для процессора. За это время он успевает обслужить многие другие процессы. Что бы не нагружать процессор, нужно просто помогать операционной системе распределять его время между твоим приложением и всей остальной системой. /ps про "аналоги разгрузки процессора" - это тебе нужно курить работу с процессами/потоками. Тема называется "многопоточное программирование". Она не для новичка. Если очень интересно, то рекомендую книгу "Бобегайлов системное программирование" С вязке с Windows там очень простыми словами описываются принципы разработки многопоточных и многопроцессовых приложений, и механизмы управления (всякие таймеры ожидания, семафоры, мьютексы, критические секции) и тп. Последний раз редактировалось _Bers; 07.05.2012 в 17:18. |
|
08.05.2012, 06:35 | #9 |
Пользователь
Регистрация: 01.05.2012
Сообщений: 23
|
Ога, примерно понял) Спасибо за разьяснение и наводку, буду изучать)
|
09.05.2012, 20:31 | #10 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
Вставь в цикл Application->processmessages(); чтобы "висяка" не было.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Грузит процессор на 50% | Vikup | Microsoft Office Excel | 2 | 26.04.2012 08:50 |
svchost.exe грузит проц | grafgrial | Софт | 7 | 05.01.2012 19:40 |
Грузит процесс | ego30 | Работа с сетью в Delphi | 1 | 29.09.2011 19:42 |
Timer и advstring1DrawCell грузит процессор | designer999 | Общие вопросы Delphi | 10 | 04.09.2011 13:48 |
svchost грузит систему | Kn793 | Windows | 2 | 25.12.2009 13:04 |