使用信号量限制并发数量

1、限制并发是为了保护有限的资源或防止系统过载。例如:让10个线程同时工作听起来很高效,但如果它们争抢的只是3个坑位的资源(比如数据库连接、CPU核心、网络宽带),结果就是灾难性的。

2、保护有限的物理资源,最典型的例子就是数据库连接池,如果使用互斥锁,让10个线程排队,每次只有一个人拿到锁而连接到整个连接池,就会导致连接池中只有1个连接工作,其他连接处于空闲状态,导致效率低下;而使用计数信号量之后,每次允许3个连接,剩下7个线程排队,一旦有人释放了许可,就允许其它等待的获取该许可,即保护了连接池资源,又实现了最大程度的并发。

相关推荐
青少儿编程课堂6 小时前
2026蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:堆排序与优先队列解析
c++·python·算法·bfs·信息学竞赛
Eiceblue6 小时前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
j7~7 小时前
【C++ 面试笔记】(篇二):类与数据抽象 & STL 容器与算法
开发语言·c++·面试·stl容器和算法·类和数据抽象
Fuyo_11197 小时前
深入解析 C++ unordered_set 与 unordered_map 的核心特性与性能实战
开发语言·c++
码匠许师傅7 小时前
【C++三方组件】FFmpeg:音视频处理的瑞士军刀
c++·ffmpeg·音视频
ShineWinsu7 小时前
对于Qt:QPushButton常见属性的解析
开发语言·c++·qt·api·gui·按钮·qpushbutton
外贸GEO优化7 小时前
外贸独立站的可抓取性:JS 渲染、懒加载与无限滚动到底影响什么
开发语言·javascript·ecmascript
飞浪纪元[FWC–FE]7 小时前
Qt 工程创建与 CMake / qmake 构建规范
开发语言·数据库·qt
Lhan.zzZ8 小时前
用 Qt 构建线程安全的通讯静态库:从线程亲和性到完整工程
c++·vscode·qt·tcp/ip·udp