Подтвердить что ты не робот

Функция сна в С++

Есть ли такая функция, как Sleep(time); что приостанавливает программу на X миллисекунд, но в C++?

Какой заголовок я должен добавить и что такое сигнатура функции?

4b9b3361

Ответ 1

Используйте 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.

Ответ 2

Вам понадобится хотя бы С++ 11.

#include <thread>
#include <chrono>

...

std::this_thread::sleep_for(std::chrono::milliseconds(200));

Ответ 3

В Unix #include <unistd.h>.

Вы заинтересованы в вызове usleep(). Это занимает микросекунды, поэтому вы должны умножить свое значение в миллисекундах на 1000 и передать результат в usleep().

Ответ 4

До С++ 11 не было портативного способа сделать это.

Переносимым способом является использование библиотеки Boost или Ace. Есть ACE_OS::sleep(); в туз.

Ответ 5

Для Windows:

#include "windows.h" 
Sleep(10);

Для Unix:

#include <unistd.h>
usleep(10)

Ответ 6

Простейший способ, который я нашел для 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>>

Ответ 7

Просто используйте это...

Сначала unistd.h заголовочный файл unistd.h, #include<unistd.h>, и используйте эту функцию для приостановки выполнения вашей программы на желаемое количество секунд:

sleep(x);

x может принимать любое значение в секундах.

Если вы хотите приостановить программу на 5 секунд, она выглядит так:

sleep(5);

Это правильно, и я использую это часто.

Это действительно для C и C++.