ev-spdlog-condvar-periodic-worker-001¶
| 字段 | 值 |
|---|---|
| 项目 | gabime/spdlog |
| 固定 commit | 79524ddd08a4 |
| 路径 | include/spdlog/details/periodic_worker.h |
| 行段 | L31-L39 |
| 特性 | std::condition_variable |
| 许可证 | MIT |
| 代码来源 | 项目源码 |
| 级别 | manual |
| 审核 | zyuhao7 @ 2026-11-03 |
| 测试代码 | 否 |
| 发现方式 | manual |
用法¶
用 condition_variable::wait_for 配合谓词实现可中断的周期任务
为什么典型¶
工作线程需要按固定间隔执行回调,同时在析构时立即醒来退出;wait_for 的谓词检查 active_,把超时与停止条件合并成一次等待。
摘录¶
worker_thread_ = std::thread([this, callback_fun, interval]() {
for (;;) {
std::unique_lock<std::mutex> lock(this->mutex_);
if (this->cv_.wait_for(lock, interval, [this] { return !this->active_; })) {
return; // active_ == false, so exit this thread
}
callback_fun();
}
});
备注¶
生产头文件;wait_for 返回 true 表示谓词成立而非超时,代码据此区分“停止”与“又到周期”。