Для задержки времени обычно юзаю sleep()
из unistd.h
, но эта функция принимает в качестве аргумента секунды, а иногда задержку нужно поставить менее 1 секунды. Какой есть аналог этой функции, который принимает значение в милисекундах?
Если вы используете С++11, то в стандартную библиотеку добавлена кроссплатформенная функция std::this_thread::sleep_for для возможности блокировать текущее выполнение потока на заданный промежуток времени.
В качестве промежутка времени передаётся класс std::chrono::duration, который предназначен для задания промежутка времени в различных единицах измерения.
Например,
std::this_thread::sleep_for(std::chrono::nanoseconds(ssec));
std::this_thread::sleep_for(std::chrono::microseconds(usec));
std::this_thread::sleep_for(std::chrono::milliseconds(ms));
std::this_thread::sleep_for(std::chrono::seconds(sec));
std::this_thread::sleep_for(std::chrono::minutes(min));
std::this_thread::sleep_for(std::chrono::hours(hrs));
Дополнительно: в стандарте С++14 имеются предопределённые пользовательские литералы, которые позволяют задать интервалы времени в различных единицах измерения в более читабельном виде.
Например, если вы хотите установить sleep потоку на 100 миллисекунд, то вместо того, чтобы писать так
std::this_thread::sleep_for(std::chrono::milliseconds(100));
можно написать так
using namespace std::literals::chrono_literals;
std::this_thread::sleep_for(100ms);
Эти куски кода эквивалентны, но второй вариант выглядит более читабельным.
Функция usleep(). Задаёт ожидание в микросекундах (1000000 микросекунд = 1 секунда, 1000 микросекунд = 1 милисекунда). Пример:
#include <unistd.h>
const unsigned int microseconds = 683;
int main()
{
// ...
usleep(microseconds);
// ...
return 0;
}
Есть C++ проект в Visual Studio 2017, нужно скомпилировать его для дальнейшего запуска на Linux(Ubuntu) какие существуют варианты для реализации?
Я не особо разбираюсь в c++, но столкнулся с такой проблемой, что заголовочные файлы из стандартной библиотеки (stdio, conio, winsock2) не открываются
во всех проектах с++ visual studio 2017 community при запуске программы появляется такое окно