Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймер, знаю, было, но мне надо конкретно. 
:(
    Опции темы
gepard
Дата 16.5.2004, 05:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Допустим у меня есть бесконечный цикл(не надо мне говорить, что он на 100% загружает проц: я в курсе), мне надо, что бы он был убит по прохождению 5 секунд, т.е. что-то типа:
Код

for (;;)
  if (timer==5)
       break;
   ...

где ... - какие-то действия. Как вы уже поняли, всё должно работать так, что если не прошло 5 сек., то продолжают выполняться действия. Т.е. это не должна быть "заморозка" процесса выполнения программы(например, Sleep'ом).
Помогите кто чем может.



--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
chipset
Дата 16.5.2004, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Что то типа этого ИМХО:
Код

#include <time.h>
void main() {
int t_before;
t_before=time(NULL);
while(;;) {
if(time(NULL)-t_before>5000) break;// Мы вычитаем время во время процесса из
//времени до процесса, там правда все равно будет небольшая неточность около //100 милисекунд
//bla-bla-bla
}
}


Что то типа этогоsmile.gif


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
mr.DUDA
Дата 16.5.2004, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Можно сделать 2 потока - рабочий и ждущий N секунд, при этом основная программа не будет "замораживаться"
Цитата
// поток, в котором выполняются все действия
DWORD WINAPI WorkerThread(LPVOID lParam)
{
   
while(1)
    {
       
// здесь можно делать всё что угодно,
        // не проверяя истечение временного интервала
   
}
   
return 1;
}

// ждущий поток, который запускает и останавливает поток выше
DWORD WINAPI WaitingThread(LPVOID lParam)
{
   
DWORD howToWait = (DWORD)lParam;
   
DWORD id;
   
HANDLE hThread = CreateThread(0,0,&WorkerThread,0,0,&id);
   
Sleep(howToWait);
   
TerminateThread(hThread,0);
   
return 1;
}

////////////////////////////////////////////////////////

// проверочная функция
void Test(DWORD howToWait=5000) // по умолчанию 5 секунд
{
   
DWORD id;
   
CreateThread(0,0,&WaitingThread,(LPVOID)howToWait,0,&id);
}



--------------------
user posted image
PM MAIL WWW   Вверх
gepard
Дата 17.5.2004, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Мерси, месье... cool.gif


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.