• 原子操作与锁


    1. 既然比较两者性能, 必然锁的区域极小, 可以使用原子操作代替

    2. 若这个极小区域就是操作的全部, 只是频繁被调用, 则看并发的线程数量, 在并发量小时,  线程冲突小, 而一个 yield 可以保证较长时间内其他线程不来打搅, 获得的是一个类似批处理的结果, 性能较原子操作高; 自然, 若仅仅只有一个线程, 大家都是批处理, 还是原子操作性能高些; 随着线程数增加, 线程冲突频繁, 此时基本上无视线程多少的原子操作开始超越 yield 锁; 若是 futex 锁, 似乎比 yield 锁可以取得更高性能;但  futex 太重, 估计要超过 yield 锁需要的线程数是个不太现实的数字;

    3, 若这个极小区域是一个较长调用的一部分, 则锁区域比重降低, 意味着同时访问临界区的概率降低, 此时锁自身的成本成为性能主要影响因素, 原子操作性能会超过yield锁,  但由于锁区域比重低, 因此整体性能并不会表现出很大差异

    唯一貌似原子操作比 yield 锁性能大很多的就是 情况 2 的极大并发下 及 锁区域很大下, 但很大的锁区域恐怕原子操作不能够做等价实现, 因此没有意义

    结论就是整体而言, 原子操作性能要高些, 但有限

  • 相关阅读:
    Python M3 面向对象
    Python 基础
    Python 基础
    Python 基础
    Python 作业
    Python 基础
    Python 基础
    【机器学习】周志华 读书笔记 第三章 线性模型
    【机器学习】周志华 读书笔记 第二章 模型评估与选择
    【机器学习】周志华 读书笔记 第一章 绪论
  • 原文地址:https://www.cnblogs.com/zylthinking/p/3736032.html
Copyright © 2020-2023  润新知