当前位置: 首页 > article >正文

线程锁和协程锁的区别

转自:chatgpt

1.bthread_mutex_t

bthread_mutex_t 是 brpc 框架提供的一种互斥锁,专门为 bthread(轻量级线程) 设计,具有以下特点:

  1. 适用于 bthread 调度模型

    • bthread_mutex_t 是为 brpc 中的 bthread 设计的互斥锁。
    • 在 brpc 中,bthread 是轻量级的线程(协程),它们由 brpc 的调度器管理,而非直接由操作系统调度。
  2. 非阻塞调度

    • 如果一个 bthread 在尝试获取 bthread_mutex_t 时被阻塞,调度器会将该 bthread 挂起,并切换到其他可以运行的 bthread
    • 这种机制避免了因为锁等待而浪费 CPU 资源。
  3. 高并发优化

    • 适合高并发场景,尤其是 brpc 框架内部大量使用 bthread 的情况下,bthread_mutex_t 能最大程度利用其调度特性。
  4. 性能优化

    • 在轻量级线程上下文中,bthread_mutex_tstd::mutex 更高效,因为它减少了线程上下文切换的开销。
适用场景
  • 协程场景:如果代码运行在 bthread 上,例如 brpc 的 RPC 逻辑中,应该使用 bthread_mutex_t
  • bthread 的友好支持:能更好地利用 brpc 框架的协程调度能力。
限制
  • 只能用于 bthread 上下文中。如果直接在普通线程(非 bthread)中使用,可能会导致异常行为或性能损失。

2.std::mutex

std::mutex 是 C++ 标准库提供的互斥锁,属于通用锁机制,由操作系统直接管理。

特点
  1. 基于操作系统的线程调度

    • std::mutex 是为操作系统的原生线程(如 pthread 或 Windows thread)设计的。
    • 如果一个线程试图获取锁但被阻塞,该线程会被操作系统挂起,直到锁可用。
  2. 阻塞模型

    • 被阻塞的线程会进入操作系统的等待队列,这可能会导致线程上下文切换,增加性能开销。
  3. 适用范围广

    • 可以在任何线程上下文中使用,无需依赖特定的线程调度器或框架。
适用场景
  • 普通线程场景:适用于不依赖协程调度的程序,例如传统的多线程程序。
  • 兼容性要求:适合与标准 C++ 代码或非 brpc 框架代码协作时使用。
限制
  • 如果在协程或 bthread 场景中使用,std::mutex 的阻塞特性会导致整个线程(包括其他 bthread)被挂起,无法有效利用 brpc 的协程调度能力。

如果你的代码既运行在 brpc 框架内,也可能被外部线程调用,建议仔细规划互斥锁的使用,避免将 bthread_mutex_t 用在普通线程中。


http://www.kler.cn/a/461531.html

相关文章:

  • 软考教材重点内容 信息安全工程师 第 12 章网络安全审计技术原理与应用
  • RAG实战:本地部署ragflow+ollama(linux)
  • 【网络】什么是路由协议(Routing Protocols)?常见的路由协议包括RIP、OSPF、EIGRP和BGP
  • 电子电气架构 --- 中央处理器HPC及软件架构
  • LeetCode:106.从中序与后序遍历序列构造二叉树
  • 前端路由 Hash 和 History 模式原理对比区别
  • Redis Stream:实时数据处理的高效解决方案
  • 2分钟知晓Vscode 插件发布流程
  • 【Rust自学】8.6. HashMap Pt.2:更新HashMap
  • 智能运维分析决策系统:构建高效运维的新篇章
  • 自动化与人工结合:如何平衡效率与风险?
  • 监控 Docker 注册表
  • 基于 Slf4j 和 AOP 的自动化方法执行时间日志记录方案
  • python-Flask:SQLite数据库路径不正确但是成功访问到了数据库,并对表进行了操作
  • QT----------常用界面组件的使用
  • 2024 AI产品经理在大模型的探索与实践(附学习资料下载)
  • 低空经济迅猛发展,无人机服务拔得头筹
  • 2021-04-14 输入一个数,判断奇偶性,若是奇数乘以2,若是偶数除2,得到结果若是三位数则反序,否则输出计算结果
  • Java 溯本求源之基础(三十三)——接口
  • 使用logrotate工具来管理和轮转日志文件
  • 007-构建工具大进步:Amper Amper Amper!
  • 论文研读:Tune-a-video — 微调学习单个视频内的物体动作(Arxiv: 2023-03-17)
  • 智能边缘计算×软硬件一体化:开启全场景效能革命新征程(高校开发者作品)
  • 【MySQL初级】第5-11章
  • 职场中倾听比表达更显智慧
  • 【传感器技术】第7章 温度传感器,热电偶,热电阻,热敏电阻,集成温度传感器