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 间切换。