Спать в течение миллисекунд - PullRequest
542 голосов
/ 15 ноября 2010

Я знаю, что функция POSIX sleep(x) переводит программу в спящий режим на x секунд. Есть ли функция, которая заставляет программу спать в течение x миллисекунд в C ++?

Ответы [ 15 ]

4 голосов
/ 09 июля 2014

Способ сна вашей программы на C ++ - это метод Sleep(int).Файл заголовка для него: #include "windows.h."

Например:

#include "stdafx.h"
#include "windows.h"
#include "iostream"
using namespace std;

int main()
{
    int x = 6000;
    Sleep(x);
    cout << "6 seconds have passed" << endl;
    return 0;
}

Время, в течение которого он спит, измеряется в миллисекундах без ограничения.

3 голосов
/ 11 августа 2016

Использовать Boost асинхронные потоки ввода / вывода, спать в течение x миллисекунд;

#include <boost/thread.hpp>
#include <boost/asio.hpp>

boost::thread::sleep(boost::get_system_time() + boost::posix_time::millisec(1000));
3 голосов
/ 15 ноября 2010

Выбор вызова - это способ повысить точность (время ожидания может быть указано в наносекундах).

0 голосов
/ 06 июня 2019

Вопрос старый, но мне удалось найти простой способ добавить это в мое приложение. Вы можете создать макрос C / C ++, как показано ниже, используя его:

#ifndef MACROS_H
#define MACROS_H

#include <unistd.h>

#define msleep(X) usleep(X * 1000)

#endif // MACROS_H
0 голосов
/ 17 марта 2017

В качестве замены Win32 для систем POSIX:

void Sleep(unsigned int milliseconds) {
    usleep(milliseconds * 1000);
}

while (1) {
    printf(".");
    Sleep((unsigned int)(1000.0f/20.0f)); // 20 fps
}
...