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

Цикличная работа программы - C++

Восстановить пароль Регистрация
 
pav25
1 / 1 / 0
Регистрация: 10.11.2010
Сообщений: 8
10.11.2010, 10:31     Цикличная работа программы #1
привет всем! как организовать цикличную работу программы? Например: каждую секунду необходимо запускать функцию, так вот проверку (прошла секунда или нет) организовал через while. понимаю что это не правильно, поскольку проц загружается на 100% при работе данной проги. поскажите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2010, 10:31     Цикличная работа программы
Посмотрите здесь:

C++ Построчная работа программы
C++ Прекращена работа программы
Работа программы на С++ с вебом C++
Неправильная работа программы C++
C++ работа программы на другом ПК
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
10.11.2010, 10:49     Цикличная работа программы #2
Sleep()
pav25
1 / 1 / 0
Регистрация: 10.11.2010
Сообщений: 8
10.11.2010, 10:59  [ТС]     Цикличная работа программы #3
согласен, не написал, прикрепил Sleep(), но загрузка процессора уменьшилась всего лишь с 100% до 50%. это не совсем рабочие характеристики проги.

Добавлено через 1 минуту
может есть более кооректное решение кроме Sleep()
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
10.11.2010, 10:59     Цикличная работа программы #4
Показывайте код.
pav25
1 / 1 / 0
Регистрация: 10.11.2010
Сообщений: 8
10.11.2010, 11:45  [ТС]     Цикличная работа программы #5
объявление потока:
C
1
2
HWND hWnd=GetSafeHwnd();
AfxBeginThread(ThreadCalcQual, hWnd, THREAD_PRIORITY_NORMAL);
сам поток:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
UINT ThreadInputData(LPVOID param)
{
    while (true==bThreadCalcQ)
    {   
        InpData1.InputAllData();
        
        Calc1.ReadData();
 
        while(InpData1.GetTimeCalc() == InpData1.GetTimeNext())
        {
            InpData1.SetCurTime();
 
            if (false==bThreadCalcQ) break;
 
            Sleep(1); //- suspends the execution of the current thread for a specified interval
        }
    }
 
    return 0;
}
Добавлено через 2 минуты
Функция возвращает значение текущего времени: InpData1.GetTimeCalc()
возвращает значение времени для следующего расчета данных (через 1 сек.) InpData1.GetTimeNext()
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
10.11.2010, 12:39     Цикличная работа программы #6
В ф-цию Sleep() передаётся значения задержки в миллисекундах.
pav25
1 / 1 / 0
Регистрация: 10.11.2010
Сообщений: 8
10.11.2010, 12:48  [ТС]     Цикличная работа программы #7
согласен. устанавливал значение 1, 100, 500. Загрузка проца от данной программы не менялась - 50%

Добавлено через 3 минуты
Ожидал, что кто-то подскажет как работают "настоящие программы" в которых происходит периодическое получение данных, обработка, либо вывод.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2010, 12:56     Цикличная работа программы
Еще ссылки по теме:

C++ Прекращена работа программы
Прекращена работа программы C++
C++ Прекращена работа программы

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

Или воспользуйтесь поиском по форуму:
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
10.11.2010, 12:56     Цикличная работа программы #8
pav25, такие программы ожидают на сообщение из очереди. Либо мютексы.
Yandex
Объявления
10.11.2010, 12:56     Цикличная работа программы
Ответ Создать тему
Опции темы

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