Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
John1992on
19 / 19 / 2
Регистрация: 09.04.2010
Сообщений: 123
#1

Зависание програмы и бесконечный while - C++

28.02.2014, 09:18. Просмотров 552. Ответов 6
Метки нет (Все метки)

Доброго времени суток!

Почему простой: while (true) {} заставляет процесс тупо зависнуть?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2014, 09:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зависание програмы и бесконечный while (C++):

програмы - C++
может у кого есть колекция прог по С++ буду сильно благодарен

Ускорение програмы на с++ - C++
Здраствуйте!Нужно ускорить программу по возможности. #include <iostream> #include <vector> #include...

Меню для програмы - C++
Есть прога для курсовой, на нее нада сделать меню. Примерно такого вида: ___________________________________________________________...

Выход из програмы да,нет! - C++
Нужен код програмы чтобы в конце было чтобы выйти из програми нажмите такуэто клавишу или хотите продолжить просмотр! За рание...

Описать Методы Програмы - C++
Добрый день.Есть прога нужно описать методы.Где знаки вопроса. Розклянемо Сlass ListData. Сlass ListData { string data; ...

Прервать работу програмы - C++
У меня вопрос , могу ли я как то прервать работу программы при невыполненни или выполнении условия? if ((defaultTemp > MaxTemp) or...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
28.02.2014, 09:25 #2
потому что это бесконечный пустой цикл.

Добавлено через 6 минут
и то программа не зависает, она просто не может "уйти" дальше этого цикла
1
ArtistFBI
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 11
28.02.2014, 09:41 #3
Условный Цикл While можно представить человеческим языком в виде "Выполнять что-то пока выполняется условие" или "Выполнять что-то пока условие не изменится"

Простая структура While(условие) {тело цикла}

Например:

C++
1
2
3
4
5
6
int x=0;
 
while(x<5)
{
     x++;
}
В данном случае с каждым циклом х будет увеличиваться на единицу и сам цикл каждый раз проверяет условие (х<5), то есть цикл прокрутится 5 раз.

В твоем случае "While(true){}" цикл каждый раз проверяет условие (true==true), оно всегда истино и таким образом цикл будет работать бесконечно. В таком случае в теле цикла должно проверяться какое либо условие типа if...else и в случае истины стоять break;

Например:

C++
1
2
3
4
5
6
7
int x=0;
 
While(true)
{
    if(x==5) break;
    else x++;
}
0
John1992on
19 / 19 / 2
Регистрация: 09.04.2010
Сообщений: 123
28.02.2014, 09:48  [ТС] #4
да это все я знаю и условие с break; конечно использовал, но суть такова, что во время выполнения While(true) - процесс просто зависает видимо от большого числа итераций(т.е. имею ввиду, что получается если время выполнения этого цикла скажем превышает 5 секунд, то программа "зависает" на это время, и если так, то чего зависит время выполнения - от мощности CPU - если так, то почему он загружается всего на пару %)?
0
ArtistFBI
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 11
28.02.2014, 09:55 #5
Croessmah уже объяснил, что программа не может уйти дальше цикла. И поэтому выглядит все как зависание, но на самом деле программа работает и все время проверяет равно ли истина истине. Тут либо условие с break; не выполняется, либо условия нет вообще... годать можно бесконечно, если ты конечно кодом не поделишься.
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.02.2014, 10:53 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от John1992on Посмотреть сообщение
то программа "зависает" на это время,
Поставьте sleep'ов, не будет "зависать", но будет "зацикливаться"
Цитата Сообщение от John1992on Посмотреть сообщение
то почему он загружается всего на пару %
Странно. По идее должен хотя бы одно ядро грузить по полной.
1
ArtistFBI
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 11
28.02.2014, 11:18 #7
Цитата Сообщение от John1992on Посмотреть сообщение
время выполнения этого цикла скажем превышает 5 секунд, то программа "зависает" на это время,
Я так понимаю под словом "зависает" ты имеешь ввиду, что это время елементы управления программы (не системы) не реагируют?

В таком случае, при условии что процессор грузится на 2%, сделай выполнение цикла, или части кода, использующий этот цикл в отдельном потоке, и будет тебе счастье)

Цитата Сообщение от John1992on Посмотреть сообщение
то чего зависит время выполнения - от мощности CPU
(ИМХО) На мой взгляд, время выполнения программы зависит от тактовой частоты процессора, а потом уже от ресурсов: кол-во ядер, оперативной памяти, разрядность шины и т.п.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2014, 11:18
Привет! Вот еще темы с ответами:

Простые програмы для начинающих! - C++
Здравствуйте!!! Меня зовут Роман, я новачок в С++ но учу ее в КА &quot;ШАГ&quot; (компютерная академия), за ошибки извините я с украины и по руски...

Что выводит данные програмы - C++
char *ch={&quot;12345&quot;,&quot;ABCD&quot;,&quot;67800&quot;,&quot;3411&quot;}; char **chp={ch+2, ch, ch+1, ch+3}; char ***chpp=chp+1; main() { PRINTS(**chpp++); ...

Написание програмы по полёту ракеты - C++
Очень надеюсь, что найдётся человек, которому не лень помочь. Просто я сильно провтыкался с дэдлайном в ВУЗе и сейчас в форсированом...

Прошу помочь в написании програмы ( оплачу) - C++
Я сам не очень розбераюсь в C++ но мне в институт надо написать прогу естественно я оплачу за роботу. Програма на самомо деле легкая. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.02.2014, 11:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru