跳转至

ev-drogon-thread-hardware-concurrency-003

字段 值
项目 drogonframework/drogon
固定 commit 3aae769cc405
路径 orm_lib/src/DbClientImpl.cc
行段 L66-L71
特性 std::thread
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-11-03
测试代码 否
发现方式 manual

用法

用 std::thread::hardware_concurrency 限制数据库事件循环的线程数

为什么典型

数据库连接数超过硬件线程数不会带来收益;用 hardware_concurrency 取上限,再与用户请求的连接数取较小值,是线程池定容的常见做法。

摘录

      loops_(type == ClientType::Sqlite3
                 ? 1
                 : (connNum < std::thread::hardware_concurrency()
                        ? connNum
                        : std::thread::hardware_concurrency()),
             "DbLoop")

备注

生产代码;SQLite 固定单线程,其他数据库按连接数与 hardware_concurrency 的较小值创建事件循环。hardware_concurrency 允许返回 0,调用方仍需处理。

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