跳转至

ev-drogon-shared-mutex-pubsub-003

字段 值
项目 drogonframework/drogon
固定 commit 3aae769cc405
路径 lib/inc/drogon/PubSubService.h
行段 L51-L57
特性 std::shared_mutex
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-26
测试代码 否
发现方式 manual

用法

发布路径用 shared_lock 读取订阅表快照,再在锁外分发消息

为什么典型

读多写少的发布订阅场景;共享锁只保护快照复制,真正的回调分发不持锁,避免写者被长回调阻塞。

摘录

    void publish(const MessageType &message) const
    {
        std::shared_ptr<const HandlerMap> handlers;
        {
            std::shared_lock<SharedMutex> lock(mutex_);
            handlers = handlersMap_;
        }

备注

生产头文件;同一类型用特性宏在 shared_mutex 与 shared_timed_mutex 间切换。

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