跳转至

ev-drogon-lambda-cache-timeout-003

字段 值
项目 drogonframework/drogon
固定 commit 3aae769cc405
路径 lib/inc/drogon/CacheMap.h
行段 L528-L541
特性 lambda 表达式
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-27
测试代码 否
发现方式 manual

用法

用值捕获 key 的 lambda 构造超时回调

为什么典型

回调生命周期长于当前调用,按值捕获 key 避免悬空引用,再移交 std::function。

摘录

            std::function<void()> cb = [this, key]() {
                bool erased{false};
                std::function<void()> timeoutCallback;
                {
                    std::lock_guard<std::mutex> lock(mtx_);
                    auto iter = map_.find(key);
                    if (iter != map_.end())
                    {
                        auto &value = iter->second;
                        auto entryPtr = value.weakEntryPtr_.lock();
                        // entryPtr is used to avoid race conditions
                        if (value.timeout_ > 0 && !entryPtr)
                        {
                            erased = true;

备注

生产路径;捕获列表显式列出 this 与 key,体现生命周期边界。

查看固定 commit 源码 · 返回证据索引