РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
773 of 815 menu

Функция this_thread::sleep_for

Функция this_thread::sleep_for приостанавливает выполнение текущего потока на указанный временной интервал. Она принимает один параметр - длительность задержки, которая может быть задана с помощью различных единиц измерения времени, таких как наносекунды, микросекунды, миллисекунды, секунды, минуты или часы. Функция объявлена в заголовочном файле <thread> и находится в пространстве имен std::this_thread.

Во время выполнения функции поток не потребляет процессорное время, что позволяет другим потокам и процессам выполняться. Однако следует учитывать, что фактическое время сна может быть больше запрошенного из-за планировщика операционной системы.

Синтаксис

this_thread::sleep_for(duration);

Пример

Давайте приостановим выполнение программы на 2 секунды и выведем сообщение до и после задержки:

#include <iostream> #include <thread> #include <chrono> using namespace std; int main() { cout << "Start" << endl; this_thread::sleep_for(chrono::seconds(2)); cout << "End" << endl; return 0; }

Результат выполнения кода:

"Start" "End"

Сообщение "End" появится на экране только через 2 секунды после вывода "Start".

Пример

Давайте используем миллисекунды для более точной задержки. Приостановим поток на 500 миллисекунд:

#include <iostream> #include <thread> #include <chrono> using namespace std; int main() { cout << "Waiting..." << endl; this_thread::sleep_for(chrono::milliseconds(500)); cout << "Done" << endl; return 0; }

Результат выполнения кода:

"Waiting..." "Done"

Пример

Давайте создадим два потока, один из которых будет выполняться с задержкой, чтобы продемонстрировать параллельную работу:

#include <iostream> #include <thread> #include <chrono> using namespace std; void worker() { for (int i = 0; i < 3; i++) { this_thread::sleep_for(chrono::seconds(1)); cout << "Worker: " << i << endl; } } int main() { thread t(worker); cout << "Main thread continues" << endl; t.join(); return 0; }

Результат выполнения кода (примерный):

"Main thread continues" "Worker: 0" "Worker: 1" "Worker: 2"

Смотрите также

  • класс thread,
    который представляет отдельный поток выполнения
  • функция sleep_until,
    которая приостанавливает поток до указанного момента времени
  • функция yield,
    которая передает управление другим потокам
  • метод join,
    который ожидает завершения потока
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить