news 2026/6/1 19:16:49

ZLToolKit 源码分析(二):线程同步原语 semaphore 与 onceToken

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ZLToolKit 源码分析(二):线程同步原语 semaphore 与 onceToken

高并发框架的基石是同步原语。本文逐行分析 ZLToolKit 自研的 semaphore(信号量)和 onceToken(RAII 守卫),揭示其如何用 C++11 标准库实现高效且安全的线程同步。

1. 为什么不用 std::semaphore?

C++20 才引入std::counting_semaphore,而 ZLToolKit 基于 C++11 开发,必须自研。其实现基于std::condition_variable+std::mutex,语义等价于std::counting_semaphore

2. semaphore 源码全解

文件:src/Thread/semaphore.h

2.1 完整源码

classsemaphore{public:semaphore(size_t initial=0){_count=initial;}// V 操作:释放信号量voidpost(size_t n=1){std::lock_guard<std::mutex>lock(_mutex);_count+=n;if(n>1){_condition.notify_all();}else{_condition.notify_one();}}// P 操作:获取信号量(阻塞)voidwait(){std::unique_lock<std::mutex>lock(_mutex);while(_count==0){_condition.wait(lock);}--_count;}private:size_t _count;std::mutex _mutex;std::condition_variable _condition;};

2.2 逐行精析

post() — 释放信号量
voidpost(size_t n=1){std::lock_guard<std::mutex>lock(_mutex);// RAII 加锁_count+=n;// 增加计数if(n>1){_condition.notify_all();// 释放多个,唤醒所有等待者}else{_condition.notify_one();// 释放一个,只唤醒一个}}

关键设计:

  • n > 1时用notify_all()——因为多个等待者可能都需要被唤醒
  • n == 1时用notify_one()——避免惊群效应(thundering herd)
wait() — 获取信号量
voidwait(){
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 19:15:22

Sora 2生成课件视频模糊/口型不同步/字幕错位?这是GPU显存分配与token缓存策略不匹配导致的(附nvidia-smi实时诊断命令)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Sora 2培训视频生成的核心挑战与现象归因 Sora 2在训练高质量长时序视频生成模型时&#xff0c;暴露出若干深层系统性挑战&#xff0c;其根源不仅在于数据规模或算力限制&#xff0c;更涉及时空建模本质…

作者头像 李华
网站建设 2026/6/1 19:14:18

新手玩转 Hermes 电脑端详细部署实操流程

✨Windows 本地部署 Hermes 太麻烦&#xff1f;这个一键包 5 分钟就能跑起来✨ 很多人想要体验 Hermes Agent 工具&#xff0c;可真正着手部署时&#xff0c;总会卡在繁杂的环境配置环节。 手动安装各类依赖、调试运行环境、修复路径异常问题&#xff0c;还时常遭遇命令行报错…

作者头像 李华
网站建设 2026/6/1 19:13:00

2026 年论文降 AI 工具横评,早标网为何能实现知网检测零通过率

2026 年 AIGC 检测升级&#xff1a;为何多数工具失效&#xff0c;而早标网能实现知网零通过率 2026 年&#xff0c;国内学术界的 AIGC&#xff08;人工智能生成内容&#xff09;检测标准迎来了前所未有的全面升级。对于急需通过硕博论文答辩或核心期刊审核的科研人员而言&#…

作者头像 李华
网站建设 2026/6/1 19:09:22

原厂稳交付,玻璃剧场打造文旅长效增收新业态

当前文旅行业竞争日趋激烈&#xff0c;多数传统场馆面临核心业态老旧、引流能力不足、投资成本高、回本周期长等经营痛点。大规模新建、改扩建项目投入大、风险高、周期漫长&#xff0c;难以适配市场快速变化的消费需求。在此背景下&#xff0c;轻量化、高灵活、稳收益的沉浸式…

作者头像 李华
网站建设 2026/6/1 19:09:21

[特殊字符] 一念成仙机器人:灵兽系统保姆级入门教程

在一念成仙的修真大世界中&#xff0c;灵兽不仅是你漫漫仙途上的忠实伙伴&#xff0c;更是能够为你提供极其强大多维增益的核心助力。为了让各位道友快速上手&#xff0c;这里准备了一份全方位的灵兽系统入门指南。 一、 准备工作&#xff1a;寻找与捕捉 想要获得你的第一只灵兽…

作者头像 李华
网站建设 2026/6/1 19:08:58

别再被Windows Server 2016评估版自动关机搞崩溃了!手把手教你用DISM命令转正式版(附ProductKey)

Windows Server 2016评估版自动关机终极解决方案&#xff1a;从原理到实战凌晨三点&#xff0c;服务器突然自动关机导致业务中断——这可能是许多使用Windows Server 2016评估版运维人员最不愿面对的噩梦场景。评估版内置的自动关机机制本意是督促用户购买正版授权&#xff0c;…

作者头像 李华