ev-vroom-semaphore-search-001¶
| 字段 | 值 |
|---|---|
| 项目 | VROOM-Project/vroom |
| 固定 commit | 43dd7d0b8b56 |
| 路径 | src/problems/vrp.h |
| 行段 | L205-L207 |
| 特性 | 闩锁、屏障与计数信号量 |
| 许可证 | BSD-2-Clause |
| 代码来源 | 项目源码 |
| 级别 | manual |
| 审核 | zyuhao7 @ 2026-10-27 |
| 测试代码 | 否 |
| 发现方式 | manual |
用法¶
用静态容量的 counting_semaphore 限制同时进行的搜索数
为什么典型¶
信号量上限在编译期固定为 32,运行期计数取实际线程数,acquire/release 包住一次完整搜索。
摘录¶
const auto actual_nb_threads = std::min(nb_searches, nb_threads);
assert(actual_nb_threads <= 32);
std::counting_semaphore<32> semaphore(actual_nb_threads);
备注¶
生产路径;求解器按可用线程数限制并发搜索,避免线程数量超过硬件能力。