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

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

Войти
Регистрация
Восстановить пароль
 
Vladimir.
158 / 158 / 10
Регистрация: 24.11.2009
Сообщений: 375
#1

do this 10 second's - C++

29.09.2011, 17:23. Просмотров 567. Ответов 11
Метки нет (Все метки)

вобщем сабж. Имеется некоторая функция foo. Хочется, чтобы она выполнялась 10 секунд:
C++
1
int timer = 10 //секунд; while(timer){ foo() }
Как попроще реализовать?

Добавлено через 1 минуту
редактирование не работает. Имелось ввиду:
C++
1
2
int timer = 10 //секунд; 
while(timer){ foo() }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2011, 17:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос do this 10 second's (C++):

Time by seconds - C# WPF
Всем привет. Использую Extended WPF Toolkit <xctk:DateTimeUpDown Format="Custom" Name ="MyTime" FormatString="hh:mm" Value="01:30" /> ...

.NET 3.x Событие Wait(seconds) - Visual Basic .NET
Затрудняюсь организовать событие Wait на форме с помощью таймера. Необходимо потом использовать в коде команду ждать с параметром...

Gambas. Seconds => TimeFormat (hh:mm:ss) - Basic
Как это сделать в Гамбасе? Алгоритм Visual Basic.

Maximum execution time of 30 seconds exceeded - PHP
Всем привет! У меня ВДСка. Пытаюсь запустить скрипт загрузки файла, файл не загружается. В логах PHP следующее: PHP Fatal error: Maximum...

Ошибка Maximum execution time of 30 seconds - PHP
Добрый день. У меня выскакивает ошибка следующего типа: Fatal error: Maximum execution time of 30 seconds exceeded in...

Maximum execution time of 30 seconds exceeded - PHP
Fatal error: Maximum execution time of 30 seconds exceeded in c:\wamp\www\BD.php on line 35 что то связанное с времен им соединения ...

11
diagon
Higher
1933 / 1199 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.09.2011, 17:30 #2
Ну примерно также, только эту функцию в отдельный поток вынести.
Хотя без потока проще =\ Просто в цикле сравниваете текущее время с начальным, если разница больше 10 - выходить из цикла.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 17:32 #3
::Sleep(10000); до или после или в функции поставь.
0
Vladimir.
158 / 158 / 10
Регистрация: 24.11.2009
Сообщений: 375
29.09.2011, 17:45  [ТС] #4
Deviaphan, плохо. мне не нужно ожидание в течении 10 секунд, мне нужно выполнение в течении 10 секунд.
diagon, вы имеете ввиду что-то вроде
/* ... */
beginthread ( foo );
sleep(10);
endthread ( foo );
/* ... */

??
хотелось бы получить код не привязанный к платформе. (буста нет, увы).

сейчас сделано с использованием time.h, однако в каждой итерации идет вызов time(NULL) для проверки. Поскольку foo совсем крохотная боюсь получить погрешность под 50%
0
-=ЮрА=-
Заблокирован
Автор FAQ
29.09.2011, 17:46 #5
Лови, программа ровно через каждую секунду будет выдавать сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <time.h>
 
int main()
{
    printf("Enter wait-time : ");
    long end;scanf("%u",&end);
    long bgn = time(NULL);
    long sec = 1;
    double dif;
    while((dif = difftime(time(NULL),bgn)) <= end)
    {
        if(sec <= dif)
            printf("wait-time is : %u seconds\r\n",(sec++));
    }
    return 0;
}
Enter wait-time : 10
wait-time is : 1 seconds
wait-time is : 2 seconds
wait-time is : 3 seconds
wait-time is : 4 seconds
wait-time is : 5 seconds
wait-time is : 6 seconds
wait-time is : 7 seconds
wait-time is : 8 seconds
wait-time is : 9 seconds
wait-time is : 10 seconds
Press any key to continue
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 17:49 #6
Насколько я понял, внутри функции цикл. Сделай в цикле проверку времени с момента входа в функцию и выходи через 10 секунд. Если в функции не цикл, то только через поток с грубым его убийством.
0
-=ЮрА=-
Заблокирован
Автор FAQ
29.09.2011, 17:51 #7
Цитата Сообщение от Deviaphan Посмотреть сообщение
:Sleep(10000); до или после или в функции поставь.
Цитата Сообщение от Vladimir. Посмотреть сообщение
beginthread ( foo );
sleep(10);
endthread ( foo );
- это неоправданная сложность, смотри мой пост тикает каждую секунду
0
Vladimir.
158 / 158 / 10
Регистрация: 24.11.2009
Сообщений: 375
29.09.2011, 17:52  [ТС] #8
всем спасибо.

решено.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 17:53 #9
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
то неоправданная сложность
Ничего, что у тебя цикл съедает всё процессорное время, в то время как Sleep позволяет работать прочим программам?
Да и ТС уже сказал, что эти варианты не подходят.
0
-=ЮрА=-
Заблокирован
Автор FAQ
29.09.2011, 17:56 #10
Цитата Сообщение от Deviaphan Посмотреть сообщение
Ничего, что у тебя цикл съедает всё процессорное время
- думаю та погорячился, программа почти не напрягает проц, а вот садить на thread-нить что-нибудь простое думаю не лучший вариант...
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 18:00 #11
10 секунд простое не считают.)

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
программа почти не напрягает проц
Может и for( ; ; ) ; проц не напрягает?

Добавлено через 1 минуту

Не по теме:

Срочно закройте тему, пока опять не нафлудил кто-то.

0
Nameless One
29.09.2011, 18:24     do this 10 second's
  #12
 Комментарий модератора 
Тема закрыта как решенная
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2011, 18:24
Привет! Вот еще темы с ответами:

Maximum execution time of 180 seconds exceeded - PHP
Всем привет! Сегодня без изменений в скрипте начал вылетать парсер с таймаутом Fatal error: Maximum execution time of 180 seconds...

Fatal error: Maximum execution time of 30 seconds exceeded - PHP
Привет всем! Пишу скрипт автоматической рассылки сообщений пользователям, недавно вступившим в группу Вконтакте. Алгоритм простой и с ним я...

Ошибка в joomla! Maximum execution time of 30 seconds exceeded - Joomla
Fatal error: Maximum execution time of 30 seconds exceeded in X:\home\localhost\www\project1\libraries\joomla\filesystem\folder.php on line...

Press ESC in 2 Seconds to skip startup.nsh,any other key to continue - BIOS
Пытался переустановить виндовс,после переустановки стала выбивать данная ошибка, что делать?


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

Или воспользуйтесь поиском по форуму:
12
29.09.2011, 18:24
Закрытая тема Создать тему
Опции темы

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