Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
17.08.2010, 19:16   #1
TitanX
Новичок
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 6
Как разгрузить процессор при бесконечном цикле / C++ Builder

Код C++
1
2
3
4
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
 while(1) {}; 
}
 Комментарий модератора Папа Карло
Используйте теги кода
17.08.2010, 19:16
AdAgent
Объявления
17.08.2010, 19:45   #2
Monte-Cristo
Форумчанин
2781 / 1352 / 15
Регистрация: 07.03.2009
Сообщений: 4,447
Как разгрузить процессор при бесконечном цикле

Процессор, или чтоб gui отвис? Самый лучший способ - вынести бесконечный цикл в поток.
Можно просто выделять процессорное время используя Sleep(0). А вообще, самое рациональное, избегать бесконечных циклов вообще.
Другие темы раздела
Как узнать имя текущего профиля виндовс C++ Builder
застрял на вот такой задаче: как узнать имя текущего профиля виндовс? желательно чтоб работало на ХР,висте и 7 П.С. гугл помогать отказался
Работа с реестром в C++ Builder C++ Builder
Вступление: Данный FAQ тестировался и писался на системе Windows XP SP2. Используемый компилятор: Borland C++ Builder 6.0. Для начала, немного теории о реестре Windows. История появления реестра Давным-давно все настройки программ хранились в Ini-файлах, которые представляли из себя...
17.08.2010, 20:18   #3
Sasha
Форумчанин
4203 / 1892 / 73
Регистрация: 05.06.2008
Сообщений: 5,689
Записей в блоге: 3
Как разгрузить процессор при бесконечном цикле

Цитата Сообщение от TitanX Посмотреть сообщение
Код C++
1
2
3
4
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
 while(1) {}; 
}
Используйте теги кода
Код C++
1
2
3
4
5
for (;;)
 
{
 
}
17.08.2010, 20:44   #4
MikeSoft
Форумчанин
Эксперт C++
3737 / 1721 / 80
Регистрация: 21.11.2009
Сообщений: 2,542
Как разгрузить процессор при бесконечном цикле

Sasha, немножко не понял вашего совета. Поясните, какую вы видите разницу между while(1) и for(; ?
Оптимизатором будет предпринята операция по исключения проверок (ещё на этапе компиляции вы получите предупреждение "Unreachable code").

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

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

Темы потоков поднимались неоднократно... Например, можно посмотреть вот здесь: Ошибка при вызове CreateThread
17.08.2010, 21:30  [ТС]   #5
TitanX
Новичок
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 6
Как разгрузить процессор при бесконечном цикле

Спасибо. sleep(1) помогло.
17.08.2010, 21:35   #6
iama
Нарушитель
1243 / 971 / 12
Регистрация: 30.07.2010
Сообщений: 5,299
Как разгрузить процессор при бесконечном цикле

Код C++
1
Application->ProcessMessages 
... или я не в тему?
19.08.2010, 13:13   #7
ProstoMad
Форумчанин
44 / 34 / 2
Регистрация: 30.06.2010
Сообщений: 983
Как разгрузить процессор при бесконечном цикле

Как цикл в поток вывести?
19.08.2010, 13:20   #8
MikeSoft
Форумчанин
Эксперт C++
3737 / 1721 / 80
Регистрация: 21.11.2009
Сообщений: 2,542
Как разгрузить процессор при бесконечном цикле

ProstoMad, чуть выше я давал ссылку... через неё можно выйти на нужную тему.
Посмотрите пост с примером создания потока: CreateThread
21.08.2010, 10:07   #9
[XandeR]
Форумчанин
29 / 29 / 1
Регистрация: 18.03.2009
Сообщений: 380
Записей в блоге: 2
Как разгрузить процессор при бесконечном цикле / C++ Builder

я избегал попадания программы в бесконечный цикл путем установки лимита итераций цикла, например
Код C++
1
2
3
4
5
6
7
while(Replace()){
    erCounter++;
    if (erCounter>200) {
        Aux->Error("Возникло прерывание из-за вероятности входа в бесконечный цикл");
        break;
    }
}
если конечно Вам требуется прерывание
21.08.2010, 10:07
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
C++ Builder Оптимизирует ли компилятор выражения в цикле типа 90*M_PI или каждую итерацию в цикле считает заново?
Занялся сабжем по проекту. IDE Builder 2010 1) Оптимизирует ли компилятор выражения в цикле типа 90*M_PI или каждую итерацию в цикле считает заново? 2) Будет ли выигрыш от принудительного приведения типов? Типа таких строчек a = b * 2.1; a = b * 2.1f; Где а и b типа float, ведь по хорошему в...
C++ Builder phtnr 02.08.2014 01:57
C++ Builder Как оформить в цикле работу с переменной
Как оформить в цикле работу с переменной х float f6; f6=((x1*n1+x2*n2+x3*n3+x4*n4+x5*n5+x6*n6+x7*n7+x8*n8+x9*n9+x10*n10)/q); Edit7->Text=FloatToStrF(f6, ffFixed, 5, 2);
C++ Builder Ivan_12354 21.03.2014 05:49
C++ Builder Как записать в ini данные с формы в цикле?
Количество итераций не известно - вводится пользователем. Поэтому использую цикл по элементам формы. Только вот на 9й строчке компилятор выдаёт E2247 'TControl::Text' is not accessible. Хотя 10я строчка воспринимается нормально. for(int i=0;i<n/2;i++) { for (int...
C++ Builder Kulgar 28.08.2013 09:58
C# Синхронизация потоков в бесконечном цикле
Попробовал написать сначала сюда, но, пожалуй, неправильно выбрал раздел. Есть два примерно одинаковых потока. Основной код в обоих потоках крутится в цикле while, который завершается только при выходе из программы. Поток 1 выполняет некую операцию, на время которой поток 2 должен быть...
C# .NET Kasyan666 12.04.2013 06:08
Visual Basic .NET Почему зависает программа при бесконечном цикле Do - Loop
Вот собственно программа которую я делал. Но почему-то зависает при старте действий. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click WB1.Navigate(link.Text) Timer1.Start()
Visual Basic .NET _Friz_ 20.09.2012 08:26
C++ Builder Вопрос о цикле
Элеметарный вопрос однако. Допустим один батон запускат цикл. Как вторым батоном прервать цикл запущенный первым? Label и goto что ли?
C++ Builder Flyer 05.09.2011 10:06
Windows XP Перезагрузка в бесконечном цикле.
Доброго времени суток. Знакомый дал компьютер.В общем проблема такая. При загрузке компьютера он перезагружается после выбора системы.Безопасные режимы и прочее дают тот же результат,т.е перезагрузку.Пробовал загрузится с Live CD Ubuntu,но не получается,выходит надпись,что то типа debian kernel...
Windows XP Rexer 08.03.2011 10:38
C++ Builder О цикле
Хочу поговорить о функции Application->ProcessMessages() . for(int i=0;i<a;i++){ //code Application->ProcessMessages() ; } Используя ее, цикл как бы превращается в таймер. Может кто-нибудь поподробнее рассказать об этой функии или дать ссылку, где уже это обсуждалось?
C++ Builder NiTan 08.02.2010 12:07
Опции темы

Текущее время: 23:48. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.