STL を使用して実装された TimerCallback ライブラリはありますか。プロジェクトに Boost 依存関係を持ち込めません。
期限切れのタイマーは、登録された関数をコールバックできる必要があります。
標準ライブラリには特定のタイマーはありませんが、実装するのは簡単です:
#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));
}
関数が別のスレッドで呼び出されることに注意してください。そのため、関数がアクセスするデータが適切に保護されていることを確認してください。