Есть ли такая функция, как Sleep(time);
что приостанавливает программу на X миллисекунд, но в C++?
Какой заголовок я должен добавить и что такое сигнатура функции?
Есть ли такая функция, как Sleep(time);
что приостанавливает программу на X миллисекунд, но в C++?
Какой заголовок я должен добавить и что такое сигнатура функции?
Используйте std::this_thread::sleep_for
:
std::chrono::milliseconds timespan(111605); // or whatever
std::this_thread::sleep_for(timespan);
Существует также дополнительный std::this_thread::sleep_until
.
До C++ 11 у C++ не было концепции потоков и возможности ожидания, поэтому ваше решение обязательно зависело от платформы. Вот фрагмент, который определяет функцию sleep
для Windows или Unix:
#ifdef _WIN32
#include <windows.h>
void sleep(unsigned milliseconds)
{
Sleep(milliseconds);
}
#else
#include <unistd.h>
void sleep(unsigned milliseconds)
{
usleep(milliseconds * 1000); // takes microseconds
}
#endif
Но гораздо более простой метод до C++ 11 заключается в использовании boost::this_thread::sleep
.
Вам понадобится хотя бы С++ 11.
#include <thread>
#include <chrono>
...
std::this_thread::sleep_for(std::chrono::milliseconds(200));
В Unix #include <unistd.h>
.
Вы заинтересованы в вызове usleep()
. Это занимает микросекунды, поэтому вы должны умножить свое значение в миллисекундах на 1000 и передать результат в usleep()
.
До С++ 11 не было портативного способа сделать это.
Переносимым способом является использование библиотеки Boost или Ace. Есть ACE_OS::sleep();
в туз.
Для Windows:
#include "windows.h"
Sleep(10);
Для Unix:
#include <unistd.h>
usleep(10)
Простейший способ, который я нашел для C++ 11, был таким:
Ваш включает в себя:
#include <chrono>
#include <thread>
Ваш код (это пример для сна 1000 миллисекунд):
std::chrono::duration<int, std::milli> timespan(1000);
std::this_thread::sleep_for(timespan);
Длительность может быть настроена на любое из следующего:
std::chrono::nanoseconds duration</*signed integer type of at least 64 bits*/, std::nano>
std::chrono::microseconds duration</*signed integer type of at least 55 bits*/, std::micro>
std::chrono::milliseconds duration</*signed integer type of at least 45 bits*/, std::milli>
std::chrono::seconds duration</*signed integer type of at least 35 bits*/, std::ratio<1>>
std::chrono::minutes duration</*signed integer type of at least 29 bits*/, std::ratio<60>>
std::chrono::hours duration</*signed integer type of at least 23 bits*/, std::ratio<3600>>
Просто используйте это...
Сначала unistd.h
заголовочный файл unistd.h
, #include<unistd.h>
, и используйте эту функцию для приостановки выполнения вашей программы на желаемое количество секунд:
sleep(x);
x
может принимать любое значение в секундах.
Если вы хотите приостановить программу на 5 секунд, она выглядит так:
sleep(5);
Это правильно, и я использую это часто.
Это действительно для C и C++.