1、整体理解多线程

版权声明:版权归 爱装逼的文艺小青年所有 https://blog.csdn.net/toyota_rav4/article/details/84780063

目录

 

多线程

业务模型的需要 

性能

核心概念

同步和异步

并发和并行

临界区

阻塞和非阻塞

死锁 饥饿 活锁

并行的级别

阻塞

非阻塞

两大定律

阿姆达尔定律

古斯塔夫森


多线程

业务模型的需要 

  1. 并不是为了提高系统的性能,而是在业务上确实需要多个执行单元
  2. 比如 http服务器为每一个Socket连接新建一个处理线程
  3. 让不同的线程承担不同的业务工作
  4. 简化任务调度

性能

摩尔定律失效
cpu单核性能瓶颈4GHZ,硬件开发者将性能抛给软件开发者
硬件上设计多核CPU,让多线程应用程序比单线程要快
多线程让整个应用相对单线程的应用来说,性能更好

核心概念

同步和异步

同步:发送一个请求,等待返回,然后再发送下一个请求 
异步:发送一个请求,不等待返回,随时可以再发送下一个请求,在不同的线程中执行

并发和并行

并行是指两个或者多个事件在同一时刻发生;
并发是指两个或多个事件在同一时间间隔发生。

并行举例子:两个人在喂两个孩子吃饭,这叫并行,因为是同时进行的 ;
并发举例子:如果是一个人喂两个孩子吃饭,轮流着每人喂一口,这叫并发,因为是交替进行的。

临界区

阻塞和非阻塞

死锁 饥饿 活锁

死锁举例:甲、乙都需要做蛋糕(假设:蛋糕需要 鸡蛋 面粉 ),
甲拥有鸡蛋,乙拥有面粉,但都不肯交出自己手上的东西,导致蛋糕无法做出来。

并行的级别

阻塞

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

举例:只有一个厕所(临界区),排队上厕所,
必须上一个人上完。下一个才能上。

非阻塞

无障碍
    

无锁
    无障碍 、 保证有一个线程可以胜出

无等待
    无锁的、有限步完成、无饥饿

两大定律

阿姆达尔定律

题目一、如果有5个步骤的程序,每个步骤消耗100个时间单位。假设步骤2和步骤5可以完全并行,并且你有无穷多个处理器。那么根据Amdahl加速比是多少?
解答: 3个步骤必须串行,另外两个步骤可以并行,那么串行比例F=3/5;
根据阿姆达尔定律:加速比=1/(F+(1-F)/n),当n趋近无穷大的时候,
加速比=1/F = 1/(3/5) = 5/3 = 1.67,也就是说这种方式的极限加速比是1.67

古斯塔夫森

猜你喜欢

转载自blog.csdn.net/toyota_rav4/article/details/84780063