TimerCallback函数基于标准模板LIbrary而没有Boost

时间:2012-08-01 16:40:07

标签: c++ stl timer

是否使用STL实现了TimerCallback库。我无法将Boost依赖项引入我的项目中。

到期时的计时器应该能够回调注册的功能。

1 个答案:

答案 0 :(得分:9)

标准库中没有特定的计时器,但实现一个很容易:

#include <thread>

template <typename Duration, typename Function>
void timer(Duration const & d, Function const & f)
{
    std::thread([d,f](){
        std::this_thread::sleep_for(d);
        f();
    }).detach();
}

使用示例:

#include <chrono>
#include <iostream>

void hello() {std::cout << "Hello!\n";}

int main()
{
    timer(std::chrono::seconds(5), &hello);
    std::cout << "Launched\n";
    std::this_thread::sleep_for(std::chrono::seconds(10));
}

请注意,该函数是在另一个线程上调用的,因此请确保它访问的任何数据都得到适当的保护。