zoukankan      html  css  js  c++  java
  • 一,前言

    一,几个重要概念

    1.同步(synchronous)和异步(asynchronous)

      对方法调用而言,对于时间轴上,同步方法调用会等待返回,方法执行多久会等待多久而对于异步而言,方法会瞬间返回,但瞬间返回并不代表执行完毕,它会后台重启一个线程去执行。

    2.并发(Concurrency)和并行(Parallelism)

      并行:多个线程或线程同时进行,多余单个cpu,不可能出现并行;

      并发:多个线程或进程是调度执行;

    3.临界区

      用来表示一种公共资源或者共享数据,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程想要使用这个资源,就必须等待。

    4.阻塞(Blocking)和非阻塞(Non-Blocking)

      阻塞和非阻塞通常用来形容多线程之间的相互影响。比如一个线程占用了临界区资源,那么其他所有需要这个资源的线程就必须在这个临界区中进行等待,等待会导致线程挂起。这种情况就是阻塞。此时,如果占用资源的线程一直不愿意释放资源,那么其他所有阻塞在这个临界区上的线程就不能工作。

      非阻塞允许多个线程同时进入临界区。

    5.死锁(Deadlock),饥饿(Starvation)和活锁(Livelock)

      死锁:静态状态

      饥饿:指某一个或者多个线程因为种种原因无法获得需要的资源,导致一直无法执行。

      活锁:电梯遇人,动态

    6.并发级别

      阻塞:当一个线程进入临界区后,其他线程必须等待;

      无障碍(Obstruction-free):

        无障碍是一种最弱的非阻塞调度;自由出入临界区;无竞争时,有限步完成操作;有竞争时,回滚数据,无限重试;

      无锁(Lock-Free):是无障碍的,保证有一个线程可以胜出;

        while(!atomicVar.compareAndSet(localVar,localVar+1)){

          localVar = atomicVar.get();

        }

      无等待(Wait-Free):无锁的;要求所有线程都必须在有限步内完成;无饥饿的

    二,有关并行的2个定律

    1.Amdahl定律(阿姆达尔定律)

      定义了串行系统并行化后加速比的计算公式和理论上限;

      加速比定义:加速比=优化前系统耗时/优化后耗时;

      Tn=T1(F+1/(n(1-F)))

      n:处理器个数;F:串行比例;1-F:并行比例;T1:优化前耗时;Tn:优化后耗时

      加速比 = Tn/T1=1/(F+1/(n(1-F)))

      增加cpu处理器的数量并不一定能起到有效作用,提高系统内可并行化的模块比重,合理增加并行处理器数量,才能以最小的投入,得到最大的加速比。

    2.Gustafson定律(古斯塔夫森)

      说明处理器个数,串行比例和加速比之间的关系

      执行时间 :a+b(a:串行时间;b:并行时间)

      总执行时间:a+nb(n:处理器个数)

      加速比:(a+nb)/(a+b)

      定义串行比例:F=a/(a+b)

      加速比S(n)=(a+nb)/(a+b)=a/(a+b)+nb/(a+b)=F+n(1-a/(a+b))=F+n(1-F)=n-F(n-1)

      只要有足够的并行比,那么加速比和cpu个数成正比。

  • 相关阅读:
    AtCoder Beginner Contest 205
    Codeforces Round #725 (Div. 3)
    Educational Codeforces Round 110 (Rated for Div. 2)【A
    Codeforces Round #722 (Div. 2)
    AtCoder Beginner Contest 203(Sponsored by Panasonic)
    AISing Programming Contest 2021(AtCoder Beginner Contest 202)
    PTA 520 钻石争霸赛 2021
    Educational Codeforces Round 109 (Rated for Div. 2)【ABCD】
    AtCoder Beginner Contest 200 E
    Educational Codeforces Round 108 (Rated for Div. 2)【ABCD】
  • 原文地址:https://www.cnblogs.com/li-jing/p/10681684.html
Copyright © 2011-2022 走看看