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

手机版网站怎么做的建站资源共享

手机版网站怎么做的,建站资源共享,wordpress防止博客恶意采集,中国房地产行情分析butex.h 学习笔记 源码 1 概述 butex.h 提供了一种用户态同步原语 butex(类似 Linux 的 futex),专为 bthread 设计,用于高效协调线程的阻塞与唤醒。其核心是通过原子操作结合等待队列管理,减少内核态切换开销&#…

butex.h 学习笔记

源码

1 概述

butex.h 提供了一种用户态同步原语 butex(类似 Linux 的 futex),专为 bthread 设计,用于高效协调线程的阻塞与唤醒。其核心是通过原子操作结合等待队列管理,减少内核态切换开销,适用于高并发场景。


2 核心功能模块

2.1 基本操作

  • 创建与销毁

    • butex_create(): 创建 32 位 butex 对象,返回指针(非跨进程)。
    • butex_create_checked<T>(): 类型安全的创建(需 sizeof(T) == sizeof(int))。
    • butex_destroy(): 销毁 butex,释放资源。
  • 等待机制

    • butex_wait(): 原子等待 butex 值等于 expected_value,支持超时(绝对时间 abstime)和队列插入位置控制(prepend 决定头或尾)。
  • 唤醒机制

    • 单次唤醒butex_wake() 唤醒至多 1 个线程。
    • 批量唤醒butex_wake_n(n) 唤醒最多 n 个线程(n=0 唤醒全部)。
    • 排除唤醒butex_wake_except() 唤醒除指定线程外的所有等待者。
    • 队列转移butex_requeue() 唤醒一个线程,其余迁移到另一 butex。

2.2 关键设计特点

  • 轻量高效

    • 用户态实现,避免内核切换。
    • MIN_SLEEP_US=2:短于 2μs 的休眠直接返回 ETIMEDOUT,减少无意义等待。
  • 灵活唤醒策略

    • 支持精确控制唤醒数量、排除特定线程、转移等待队列,满足复杂同步需求(如锁优化、条件变量实现)。
  • 时间处理

    • butex_wait 使用绝对时间(abstime),与 futex 的相对时间不同,需调用方正确处理时间转换。
  • 队列顺序控制

    • prepend 参数允许将线程插入等待队列头部,影响唤醒顺序(如实现非公平锁)。

3 使用场景与示例

场景 1:实现互斥锁

  • 加锁:检查 butex 值,若为 0(未锁定),原子设置为 1;否则调用 butex_wait 阻塞。
  • 解锁:设置 butex 为 0,调用 butex_wake 唤醒一个等待线程。
  • 优化:使用 butex_requeue 减少竞争,将等待线程迁移到另一队列。

场景 2:条件变量

  • 等待条件:结合互斥锁,释放锁后调用 butex_wait 进入等待。
  • 通知条件:条件满足时,通过 butex_wake_all 唤醒所有等待线程。

场景 3:任务取消

  • 使用 butex_wake_except 唤醒除当前任务外的所有线程,避免自唤醒。

4 注意事项

  1. 资源管理

    • 必须成对调用 butex_createbutex_destroy,防止内存泄漏。
    • 确保 butex_wait 前检查条件,避免虚假唤醒(类似 pthread_cond_wait)。
  2. 时间处理

    • 传递 abstime 时需使用 CLOCK_REALTIME 时间,正确计算绝对时间点。
  3. 线程安全

    • butex 本身不保证线程安全,需结合原子操作或上层同步原语使用。
  4. 性能优化

    • 短时等待直接返回 ETIMEDOUT,避免无意义调度。
    • nosignal 参数可能用于减少信号开销,需根据场景选择。

5 函数对比与扩展

函数功能类比 futex
butex_wake唤醒 1 个线程FUTEX_WAKE (1)
butex_wake_n唤醒最多 n 个线程FUTEX_WAKE (n)
butex_requeue唤醒 1 个,转移其余到另一 butexFUTEX_REQUEUE
butex_wait带条件的等待(绝对超时)FUTEX_WAIT_BITSET

6 总结

butexbthread 库中高效同步的核心机制,通过用户态原子操作与等待队列管理,为上层同步原语(如互斥锁、条件变量)提供基础。其设计注重灵活性与性能,适用于高并发、低延迟场景。开发者需合理选择唤醒策略、处理时间与资源,以充分发挥其优势。


文章转载自:

http://XC5SIMta.rjxwq.cn
http://FDttXDBy.rjxwq.cn
http://gbtg4hNu.rjxwq.cn
http://FEtxeXCU.rjxwq.cn
http://hELpevqi.rjxwq.cn
http://E6GxFv7J.rjxwq.cn
http://StzUcS5U.rjxwq.cn
http://qTC3awOv.rjxwq.cn
http://E8NPyFrw.rjxwq.cn
http://FHHsDAKg.rjxwq.cn
http://pMaySEjk.rjxwq.cn
http://pX9IvwqD.rjxwq.cn
http://s4PmBhjA.rjxwq.cn
http://Hiuo05t2.rjxwq.cn
http://hs6bFUmI.rjxwq.cn
http://hknTgFTx.rjxwq.cn
http://yvPZjsFw.rjxwq.cn
http://auDsLYyb.rjxwq.cn
http://R0a4pgrz.rjxwq.cn
http://KePw48iZ.rjxwq.cn
http://A9jfER63.rjxwq.cn
http://rihtsz6T.rjxwq.cn
http://RZ3Q26n3.rjxwq.cn
http://mDs30zQK.rjxwq.cn
http://1GDkB4Du.rjxwq.cn
http://k5OcidQb.rjxwq.cn
http://98ynLzBr.rjxwq.cn
http://rKcY04MX.rjxwq.cn
http://FrWHc51v.rjxwq.cn
http://ob4hGJnE.rjxwq.cn
http://www.dtcms.com/wzjs/744767.html

相关文章:

  • 网站开发实例模板网站开发哪种语言好
  • 网站建设云南黄页企业名录
  • 部门网站建设的工作领导小组东莞做网站的网络公司
  • 您有新信息 建设招标网官方网站网站页面跳转怎么做
  • 网站建设中的接口公众号怎么制作二维码
  • 东莞市镇街建设项目监理招标网站为切实加强 网站建设
  • 百度怎么自己做网站短视频seo是什么
  • 深圳租房建设局网站北京网站建设企业网站制作
  • 便宜的网站设计企业有哪些做图纸的网站
  • 网站建设文件夹名字wordpress主题免费中文
  • 网站建设与维护工作内容微分销系统怎么做
  • 网站的排版好看做展示型网站便宜吗
  • 网站搭建中114514免费wordpress中文博客主题
  • 北京市房山建设培训学校网站想攻击一个网站怎么做
  • 网站制作软件是什么我想创个网站
  • 打开网页出现网站建设中专业做网站方案ppt
  • 网站开发建设明细报价表做网站的大小
  • 淘宝的网站是怎么做的企业宣传网页设计
  • 国外创意网站设计欣赏水泵网站站群建设
  • 网站域名注册信息查询wordpress 前台发布文章
  • 湖北做网站的公司图库素材网站模板
  • 营销推广型网站价格怎样做视频网站的外链
  • wap手机网站开发asp经验wordpress怎样在列表页使用瀑布流
  • 雄安网站建设优化公司个人网站制作的步骤
  • 提升网站建设品质公司淄博百度电话
  • 公司网站实名认证怎么做网站 备案 注销 影响
  • 做特产的网站开张怎么宣传北京工程信息网站
  • 柯桥网站建设域名自助服务平台
  • 帝国cms 关闭网站网站建设行业企业发展前景
  • 有个性的个人网站办公室装修费计入什么费用