添加startTask方法

This commit is contained in:
2024-01-23 18:21:02 +08:00
parent 1acefc3541
commit 852acda8d1

View File

@@ -80,6 +80,21 @@ namespace ling {
return *this; return *this;
} }
template<typename F, typename... Args>
static void startTask(F &&f, int64_t interval, Args &&...args) {
std::function<decltype(f(args...))()> func = std::bind(std::forward<F>(f), std::forward<Args>(
args)...); // 连接函数和参数定义,特殊函数类型,避免左右值错误
auto task_ptr = std::make_shared<std::packaged_task<decltype(f(args...))()>>(func);
std::function<void()> warpper_func = [task_ptr]() {
(*task_ptr)();
};
Task task;
task.id = -1;
task.time = std::time(nullptr) + interval;
task.fun = warpper_func;
addTask(task);
}
/// 启动定时器 /// 启动定时器
void start(int64_t interval); void start(int64_t interval);