Засыпание программы

В MinGW прерывать выполнение программы на указанное время (по истечении срока программа продолжит работу) позволяют следующие функции:

  • sleep() — прерывает выполнение текущего потока на указанное количество секунд. Прототип функции:
#include <unistd.h>
unsigned int sleep(unsigned int seconds)

Пример указания одной секунды:

sleep(1);        // Засыпаем на секунду
  • usleep() — прерывает выполнение текущего потока на указанное количество микросекунд. Прототип функции:
#include <unistd.h>
int usleep(useconds_t usec);
typedef unsigned int useconds_t;

Пример указания одной секунды:

usleep(1000000); // Засыпаем на секунду
  • nanosleep() — прерывает выполнение текущего потока на указанное количество секунд и наносекунд. Прототип функции:
#include <ctime> /* или #include <time.h> */
int nanosleep(const struct timespec *request,
              struct timespec *remain);
struct timespec {
  time_t  tv_sec;   /* Секунды */
  long    tv_nsec;  /* Наносекунды */
};

В первом параметре указывается адрес структуры со временем задержки, а во втором — адрес структуры, в которую будет записан результат (можно указать значение NULL, если результат не важен). Пример указания одной секунды:

struct timespec tw = {1, 0}, tr;
nanosleep(&tw, &tr); // Засыпаем на секунду

В Windows можно воспользоваться функцией из WinAPI Sleep(). Прототип функции:

#include <windows.h>

VOID Sleep(DWORD dwMilliseconds);

В параметре dwMilliseconds указывается количество миллисекунд, на которое прерывается выполнение текущего потока. Тип данных DWORD объявлен так:

typedef unsigned long DWORD;

Для примера выведем числа от 1 до 10 (листинг 11.3). Между выводом чисел «заснем» на одну секунду.

Листинг 11.3. «Засыпание» программы

#include <iostream>
#include <windows.h>

int main() {
   std::cout << "Start" << std::endl;
   for (int i = 1; i <= 10; ++i) {
      Sleep(1000); // Засыпаем на секунду
      std::cout << "i = " << i << std::endl;
   }
   std::cout << "End" << std::endl;
   return 0;
}

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов