当前位置:主页 > 查看内容

细节是魔鬼——基于计数器的锁机制的实现准则

发布时间:2021-06-11 00:00| 位朋友查看

简介:目前内核中大部分锁机制使用 counter based locking 来排除多处理器之间的并行度 其原理是维护一个整型数据类型的 counter 计数器 计数器的值就表示可用资源的份数 在申请占用资源的时候计数器就加 1 在申请释放资源的时候计数器就减 1counter based 的锁机制……
目前内核中大部分锁机制使用 counter based locking 来排除多处理器之间的并行度 其原理是维护一个整型数据类型的 counter 计数器 计数器的值就表示可用资源的份数 在申请占用资源的时候计数器就加 1 在申请释放资源的时候计数器就减 1 counter based 的锁机制在实现时都需要考虑 atomic 与 barrier 两个维度 ### atomic 首先 counter based 的锁机制的核心都是整型数据类型的 counter 计数器 需要保证对计数的操作是 atomic 的 现代处理器架构一般都保证对整型数据类型的 load 或 store 操作原生是 atomic 的 但是锁机制中大量涉及的是 add/sub 即 RMW (Read-Modify-Write) 操作 但是处理器架构一般不能保证 RMW (Read-Modify-Write) 操作原生是 atomic 的 - x86 架构下使用 LOCK 指令来实现 atomic RMW (read-modify-write) - ARM 架构下提供 LDREX/STREX 指令来实现 atomic RMW (read-modify-write) ### acquire/release barrier 只有 atomic RMW (read-modify-write) 还不够 因为 memory reordering 可能会将 lock 操作之后的内存访问指令重排到 lock 操作之前执行
本文转自网络,原文链接:https://developer.aliyun.com/article/784609
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐