Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Нужна функция ожидания


Автор: Wolf1994 8.4.2009, 22:10
Можно ли в C++ остановить выполнение программы на произвольное время?

Пока получилось только это:
Код

bool mywait (int secs)
{
 bool done=false;
 double dif;
 time_t start, end;

 time (&start);
 while (done!=true)
 {
  time (&end);
  dif=difftime (end, start);
  if (dif>=secs)
   done=true;
 }
 return true;
}

Функция останавливает программу, но продолжает потреблять ресурсы компьютера. Можно ли остановить программу, разгрузив процессор?

Автор: Lazin 8.4.2009, 22:16
да, для этого есть таймеры, нужно создать таймер и в зависимости от того, как он создан, либо ждать оконное сообщение, либо ждать ф-ей WaitForSingleObject, либо ждать на порте завершения, но это в случае если программа должна работать в windows...

Автор: GoldFinch 8.4.2009, 22:17
kernel32.Sleep()

Автор: Lazin 8.4.2009, 22:17
ах да, в win32 еще есть ф-я Sleep, которая усыляет вызвавший поток на N милисекунд

Автор: CrazYOne 9.4.2009, 00:26
Да вроди как есть delay()....
Или она только в С??  

Автор: J0ker 9.4.2009, 08:12
универсальный способ
Код

timeval t = {sec, usec}; // sec - секунды, usec - микросекунды
select(0, NULL, NULL NULL, &t);

Автор: Cheloveck 9.4.2009, 08:37
Цитата

kernel32.Sleep() 


Да, и ещё есть sleep() в UNIX, находится в unistd.h. Для полноты картины.

Автор: Wolf1994 9.4.2009, 13:23
Всем спасибо!

Выбрал вариант со Sleep ().

Вопрос решён.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)