zoukankan      html  css  js  c++  java
  • 聊聊高并发(三十七)整理一下并发基础中的一些知识点

    近期在准备并发基础的PPT,想到了一些知识点,记录下来以后也能够做个參考。大部分的知识点在之前的博客中都多少涉及到了

    这里的并发基础指的是单机多处理器的情况下的一些并发问题,不涉及到分布式环境下的并发问题。


    并发基础主要解决的是可见性,有序性和原子性的问题,让不可控的进程/线程变得能够预測,能够控制行为。


    Java解决可见性/有序性的主要技术是通过Java内存模型来解决的。Java内存模型这个域里面有这些知识点

    1. 可见性问题的根源 -- CPU写操作的延迟

    2. 造成写操作延迟的原因主要是快速缓存的存在,理解缓存的原理,局部性原理,快速缓存的原理等

    3. 解决可见性问题的通用方法 -- 确定一致性需求。有多种一致性模型:线性一致性,顺序一致性,因果一致性,处理器一致性,弱一致性,释放一致性,进入一致性等等

    4. 底层硬件提供了实现一致性需求的能力 -- 内存屏障,比方X86的mfence, sfence, lfence, Lock前缀等等,理解Lock前缀的语义

    5. 底层硬件提供了缓存一致性协议来提供底层同步缓存的能力,注意总线的相互排斥性,缓存一致性流量等

    6. Java内存模型是语义级的内存模型,主要是屏蔽底层硬件提供的内存模型能力的差异,提供了一系列的Java同步操作语法,制定了Happens-before规则

    7. 理解volatile, synchronized, CAS等操作的底层实现原理

    8. 理解Happens-before规则描写叙述的是可见性的问题

    9. 理解指令重排序的概念,理解有序性


    Java解决原子性的问题主要是通过锁/相互排斥来实现的,锁这个问题域里面有这些知识点

    1. 锁的原理,饥饿,公平,自旋,堵塞,管程,条件队列等等概念

    2. 并发编程的三个重要特性:可见性,有序性和原子性。锁解决的问题域

    3. 线程在各个层面的状态控制,JVM中怎样实现线程,操作系统怎样实现线程,线程调度

    4. 自旋 VS 堵塞

    5. 多种经典的自旋锁的实现,比方TAS/TTAS/CLH/MCS lock

    6. 读写锁,可重入锁,时限锁的原理和实现

    7. Object.wait(), Object.notify, Condition等条件队列操作的底层原理

    8. sun.misc.Unsafe类提供的同步能力

    9. Java并发包中的AQS同步器的设计和重点实现

    10. Java并发包中的Semaphore, CountDownLatch, CyclicBarrier等同步器的实现

    11. 一些无锁的数据结构的设计思路及实现,比方无锁队列

    12.锁的优化,比方控制锁的粒度,锁分段,识别和解决死锁/活锁等



    理解了可见性,有序性,原子性的原理和底层实现之后,须要理解一下并发场景下的一些通用的设计思路,高性能server的设计思路


    1. 怎样安全公布一个对象

    2. 线程封闭技术,不可变对象的使用

    3. 控制锁的粒度,锁分段,CopyOnWrite等优化

    4. 生产者消费模型

    5. 线程池的设计和实现

    6. 同步操作转异步操作

    7. 5种IO模型的理解

    8. 高性能server的线程模型设计, reactor / proactor

    9. 使用高效的网络传输 -- NIO的原理,设计和实现,比方epoll / selector / pull, Buffer的使用

    10. 多进程监听一个port vs  单进程监听一个port,  nginx的惊群问题分析


  • 相关阅读:
    SPOJ 8222 NSUBSTR
    bzoj千题计划284:bzoj2882: 工艺
    bzoj千题计划283:bzoj4516: [Sdoi2016]生成魔咒(后缀数组)
    bzoj千题计划282:bzoj4517: [Sdoi2016]排列计数
    bzoj千题计划281:bzoj4558: [JLoi2016]方
    bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
    bzoj千题计划279:bzoj4591: [Shoi2015]超能粒子炮·改
    bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
    bzoj千题计划277:bzoj4513: [Sdoi2016]储能表
    bzoj千题计划276:bzoj4515: [Sdoi2016]游戏
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4344048.html
Copyright © 2011-2022 走看看