«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как приостановить выполнение программы на C++ с помощью функций сна?

Как приостановить выполнение программы на C++ с помощью функций сна?

Опубликовано 31 октября 2024 г.
Просматривать:566

How to Pause Program Execution in C   using Sleep Functions?

Поиск функции сна в C

При попытке контролировать ход выполнения программы вы можете столкнуться с необходимостью приостановить ее выполнение на указанную продолжительность. В C нет прямого эквивалента широко используемой функции Sleep(time), встречающейся в других языках. Однако стандартная библиотека C предоставляет жизнеспособную альтернативу.

Представляем std::this_thread::sleep_for

Стандартная библиотека C предлагает функцию std::this_thread::sleep_for, которая позволяет вам приостановить выполнение текущего потока на указанный период. Чтобы использовать его, вам необходимо включить следующие заголовки:

#include 
#include 

Синтаксис std::this_thread::sleep_for следующий:

void sleep_for(const std::chrono::duration& timespan);

Где timespan — это объект std::chrono::duration, определяющий продолжительность сна. Чтобы создать std::chrono::duration на основе миллисекунд, используйте конструктор std::chrono::milliсекунды:

std::chrono::milliseconds timespan(111605);

Используя эти компоненты, вы можете остановить выполнение вашей программы на желаемый интервал времени:

std::this_thread::sleep_for(timespan);

Обратите внимание, что std: :this_thread::sleep_until служит дополнительной функцией для точной синхронизации по времени.

Устаревшие параметры сна (до C 11)

До появления C 11 в языке отсутствовал поток функциональность и возможности сна. Следовательно, решение о приостановке выполнения зависело от платформы. Для Windows или Unix вы могли бы положиться на что-то вроде этого:

#ifdef _WIN32
    #include 
    
    void sleep(unsigned milliseconds)
    {
        Sleep(milliseconds);
    }
#else
    #include 
    
    void sleep(unsigned milliseconds)
    {
        usleep(milliseconds * 1000); // takes microseconds
    }
#endif

В качестве альтернативы вы могли бы упростить реализацию, используя boost::this_thread::sleep из библиотеки Boost.

Заявление о выпуске Эта статья перепечатана по адресу: 1729677484. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3