Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация
 
TitanX
Новичок
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 6
17.08.2010, 19:16     Как разгрузить процессор при бесконечном цикле   #1
Код C++
1
2
3
4
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
 while(1) {}; 
}
 Комментарий модератора Папа Карло
Используйте теги кода
AdAgent
Объявления
17.08.2010, 19:16    Как разгрузить процессор при бесконечном цикле
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2010, 19:16    Как разгрузить процессор при бесконечном цикле

Посмотрите здесь:

C++ Builder О цикле

C++ Builder Вопрос о цикле

C++ Builder Вычисление в цикле

C++ Builder Мультиплицированние Image в цикле

C++ Builder БД Switch в цикле for

C++ Builder Исключение в цикле

Monte-Cristo
Форумчанин
2786 / 1357 / 15
Регистрация: 07.03.2009
Сообщений: 4,447
17.08.2010, 19:45     Как разгрузить процессор при бесконечном цикле   #2
Процессор, или чтоб gui отвис? Самый лучший способ - вынести бесконечный цикл в поток.
Можно просто выделять процессорное время используя Sleep(0). А вообще, самое рациональное, избегать бесконечных циклов вообще.
Sasha
Форумчанин
4223 / 1912 / 81
Регистрация: 05.06.2008
Сообщений: 5,816
Записей в блоге: 3
17.08.2010, 20:18     Как разгрузить процессор при бесконечном цикле   #3
Цитата Сообщение от TitanX Посмотреть сообщение
Код C++
1
2
3
4
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
 while(1) {}; 
}
Используйте теги кода
Код C++
1
2
3
4
5
for (;;)
 
{
 
}
MikeSoft
Форумчанин
Эксперт C++
3739 / 1723 / 80
Регистрация: 21.11.2009
Сообщений: 2,542
17.08.2010, 20:44     Как разгрузить процессор при бесконечном цикле   #4
Sasha, немножко не понял вашего совета. Поясните, какую вы видите разницу между while(1) и for(; ?
Оптимизатором будет предпринята операция по исключения проверок (ещё на этапе компиляции вы получите предупреждение "Unreachable code").

TitanX, используйте Sleep(1); или большее значение.
Если вам нужно обработать очередь Windows-сообщений, то лучше Application->ProcessMessages();

Опять же, Monte-Cristo прав, порекомендовав вам использовать потоки для обработки подобных циклов.

Темы потоков поднимались неоднократно... Например, можно посмотреть вот здесь: Ошибка при вызове CreateThread
TitanX
Новичок
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 6
17.08.2010, 21:30  [ТС]     Как разгрузить процессор при бесконечном цикле   #5
Спасибо. sleep(1) помогло.
AdAgent
Объявления
17.08.2010, 21:30    Как разгрузить процессор при бесконечном цикле
iama
Нарушитель
1244 / 972 / 12
Регистрация: 30.07.2010
Сообщений: 5,299
17.08.2010, 21:35     Как разгрузить процессор при бесконечном цикле   #6
Код C++
1
Application->ProcessMessages 
... или я не в тему?
ProstoMad
Форумчанин
45 / 35 / 2
Регистрация: 30.06.2010
Сообщений: 1,012
19.08.2010, 13:13     Как разгрузить процессор при бесконечном цикле   #7
Как цикл в поток вывести?
MikeSoft
Форумчанин
Эксперт C++
3739 / 1723 / 80
Регистрация: 21.11.2009
Сообщений: 2,542
19.08.2010, 13:20     Как разгрузить процессор при бесконечном цикле   #8
ProstoMad, чуть выше я давал ссылку... через неё можно выйти на нужную тему.
Посмотрите пост с примером создания потока: CreateThread
[XandeR]
Форумчанин
29 / 29 / 1
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
21.08.2010, 10:07     Как разгрузить процессор при бесконечном цикле   #9
я избегал попадания программы в бесконечный цикл путем установки лимита итераций цикла, например
Код C++
1
2
3
4
5
6
7
while(Replace()){
    erCounter++;
    if (erCounter>200) {
        Aux->Error("Возникло прерывание из-за вероятности входа в бесконечный цикл");
        break;
    }
}
если конечно Вам требуется прерывание
Yandex
Объявления
21.08.2010, 10:07    Как разгрузить процессор при бесконечном цикле
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему
Опции темы

Текущее время: 21:46. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.