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

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

Восстановить пароль Регистрация
 
John1992on
19 / 19 / 2
Регистрация: 09.04.2010
Сообщений: 123
28.02.2014, 09:18     Зависание програмы и бесконечный while #1
Доброго времени суток!

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

програмы C++
Выход из програмы да,нет! C++
Меню для програмы C++
бесконечный цикл C++
C++ Бесконечный цикл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
28.02.2014, 09:25     Зависание програмы и бесконечный while #2
потому что это бесконечный пустой цикл.

Добавлено через 6 минут
и то программа не зависает, она просто не может "уйти" дальше этого цикла
ArtistFBI
 Аватар для ArtistFBI
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 11
28.02.2014, 09:41     Зависание програмы и бесконечный while #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++;
}
John1992on
19 / 19 / 2
Регистрация: 09.04.2010
Сообщений: 123
28.02.2014, 09:48  [ТС]     Зависание програмы и бесконечный while #4
да это все я знаю и условие с break; конечно использовал, но суть такова, что во время выполнения While(true) - процесс просто зависает видимо от большого числа итераций(т.е. имею ввиду, что получается если время выполнения этого цикла скажем превышает 5 секунд, то программа "зависает" на это время, и если так, то чего зависит время выполнения - от мощности CPU - если так, то почему он загружается всего на пару %)?
ArtistFBI
 Аватар для ArtistFBI
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 11
28.02.2014, 09:55     Зависание програмы и бесконечный while #5
Croessmah уже объяснил, что программа не может уйти дальше цикла. И поэтому выглядит все как зависание, но на самом деле программа работает и все время проверяет равно ли истина истине. Тут либо условие с break; не выполняется, либо условия нет вообще... годать можно бесконечно, если ты конечно кодом не поделишься.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
28.02.2014, 10:53     Зависание програмы и бесконечный while #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от John1992on Посмотреть сообщение
то программа "зависает" на это время,
Поставьте sleep'ов, не будет "зависать", но будет "зацикливаться"
Цитата Сообщение от John1992on Посмотреть сообщение
то почему он загружается всего на пару %
Странно. По идее должен хотя бы одно ядро грузить по полной.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2014, 11:18     Зависание програмы и бесконечный while
Еще ссылки по теме:

C++ Бесконечный цикл
C++ Прервать работу програмы
Описать Методы Програмы C++

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

Или воспользуйтесь поиском по форуму:
ArtistFBI
 Аватар для ArtistFBI
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 11
28.02.2014, 11:18     Зависание програмы и бесконечный while #7
Цитата Сообщение от John1992on Посмотреть сообщение
время выполнения этого цикла скажем превышает 5 секунд, то программа "зависает" на это время,
Я так понимаю под словом "зависает" ты имеешь ввиду, что это время елементы управления программы (не системы) не реагируют?

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

Цитата Сообщение от John1992on Посмотреть сообщение
то чего зависит время выполнения - от мощности CPU
(ИМХО) На мой взгляд, время выполнения программы зависит от тактовой частоты процессора, а потом уже от ресурсов: кол-во ядер, оперативной памяти, разрядность шины и т.п.
Yandex
Объявления
28.02.2014, 11:18     Зависание програмы и бесконечный while
Ответ Создать тему
Опции темы

Текущее время: 04:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru