Как сделать вызов функции foo
с помощью времени?
Допустим через каждые 5 секунд.
Можно вот так С++11 (не самый оптимальный вариант, но быстрый в реализации):
#include <atomic>
#include <thread>
#include <chrono>
#include <iostream>
template<typename Callback, typename... Args>
std::atomic_bool& set_interval(const std::chrono::milliseconds& interval, Callback callbakc, Args... args)
{
std::atomic_bool is_running = true;
auto function = std::bind(std::forward<Callback>(callbakc), std::forward<Args>(args)...);
std::thread thread([=, &is_running]
{
while (is_running)
{
std::this_thread::sleep_for(interval);
function();
}
});
thread.detach();
return is_running;
}
int main(int argc, char** argv)
{
std::atomic_bool& is_running = set_interval(std::chrono::milliseconds(5000), []
{
std::cout << "Hello world" << std::endl;
});
std::this_thread::sleep_for(std::chrono::milliseconds(25000));
return EXIT_SUCCESS;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу простое консольное приложение При попытке скомпилировать проект линковщик выдает следующее: