28 using namespace std::chrono;
31 return high_resolution_clock::now();
33 auto elapsedSince(
const time_point<high_resolution_clock>& last)
35 return duration_cast<milliseconds>(now() - last).count();
49 std::lock_guard<std::mutex> lock(_mutex);
52 if (_haveLast && (elapsedSince(last) <= wait))
55 auto delayed = [&_last = _last, &mutex = _mutex, later] {
56 std::lock_guard<std::mutex> lock(mutex);
60 _timeout.
set(delayed, wait);
66 std::lock_guard<std::mutex> lock(_mutex);
void operator()(const Function &fn, const int64_t wait=100)
std::function< void()> Function
void set(const std::function< void()> &func, const int64_t wait)