• 原子操作与锁


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

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

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

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

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

  • 相关阅读:
    Docker Registry 管理镜像
    Dockerfile 构建镜像
    制作docker镜像
    docker 使用及基本命令
    centos7 安装 docker
    spring-boot-devtools 热部署
    mysql库复制
    windows下安装和设置gradle
    springboot项目搭建
    下载和安装
  • 原文地址:https://www.cnblogs.com/zylthinking/p/3736032.html
Copyright © 2020-2023  润新知