文档目录

为什么要用 shared_ptr<bool> 而不是直接删除任务?

// 取消方式
auto timer_id = timer.addTimer(100ms, [] { ... });
// 取消:标记为已取消
*timer_id = true;

为什么不能直接从优先队列删除?

  • std::priority_queue 不提供按值删除的接口。
  • 即使可以,删除后要调整堆,$O(\log N)$。

惰性删除:标记任务为取消(*cancelled = true),到期检查时看到已取消就不执行。虽然任务还在队列里占空间,但避免了删除的开销。如果取消的任务不多,这完全可以接受。