一 理解篇

  • 前言

本文仅仅用作借鉴使用,作者刚入行不久,所以请不小心看到这篇文章的朋友,手下留情。

本文以小故事的形式进行叙述,逻辑不通之处。请理解。

如有错误 ,欢迎指出。

谢谢。                                                                                                    最后修改时间:2019-01-25


  • 1.0.0 进程

老刘是一个软件公司的老板,公司下有两个部门,产品设计部门(产品进程)和研发部门(研发进程),产品设计部门在一楼,研发部门在二楼(独立地址空间)。

两个部门之间经常因为产品设计比较难以实现和开发进度缓慢而发生争执(开销大)。

  • 1.0.0.0 分布式

随着老刘的公司越来越大,项目也是越来越大,渐渐的,其它公司开始和老刘的公司进行商业合作,联合开发出一套产品,每个公司只负责产品的一个模块,由于目标明确,两个部门之间,合作愉快,不再发生争执(开销小)。

  • 1.0.1 线程

前天老刘在公司安装了一台打印机(打印机线程)。

  • 1.0.1.0 死锁

昨天发生了一件事,产品部门的小王和设计部门的小吴吵架了,因为两个人要打印文件(调用打印机线程),同时走到了打印机前(偶发事件),谁都想先把文件打印出来(死锁)。

为了防止这种事情再次发生,老刘规定如果再次遇到这种情况,互相不退让的情况下(时间上限),用抛硬币(随机)的方式决定谁先打印。

  • 1.0.2 微线程

昨天产品部门的小王和研发部门的小吴又吵架了,因为两个人谁都没有硬币,老刘很头疼,于是雇了张女士来专门负责打印机的打印,在遇到相同情况,随机选一个人的文件进行打印。并且在遇到紧急文件情况下,可以先进行紧急文件的打印。

  • 1.1.0 同步

在两个文件都紧急的情况下,先完成对最先打印的文件,依次按顺序打印。

  • 1.1.1 异步

老刘找张女士打印一份文件,然后回来继续工作(没得到打印结果),张女士告诉老张,可以隔一会来看打印结束没有,也可以张女士在打印完了之后发消息通知老张,或者打印完了给老王打电话,老王被选择恐惧症折磨的快疯了。

  • 1.2.0 并发

老刘创业初期,公司刚刚成立,整个研发部,只有小吴(CPU)一个人,开发进度缓慢,小吴只能一件事一件事的做。

  • 1.2.1 并行

创业中期,公司初具规模,研发部增加到了一百人(CPU),开发进度很快。

  • 1.2.1.1 高并发

(由于小编对高并发概念尚不清晰,故尚未编写)

  • 1.3.0 阻塞

张女士在打印文件,在文件打印过程中,张女士要一直等待打印结束。

  • 1.3.1 非阻塞

张女士又在打印文件,在文件打印过程中,张女士在和小吴唠家常。


参考链接:

https://www.cnblogs.com/mhq-martin/p/9035640.html

https://blog.csdn.net/woshishui918/article/details/78658046

https://blog.csdn.net/weixin_41819299/article/details/81259749

C# 【一】进程 , 线程 , 微线程 , 同步 , 异步 , 并发 , 并行 , 阻塞 , 非阻塞的更多相关文章

  1. Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就绪,挂起,运行) ,***协程概念,yield模拟并发(有缺陷),Greenlet模块(手动切换),Gevent(协程并发)

    Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就 ...

  2. 进程&线程 同步异步&阻塞非阻塞

    2015-08-19 15:23:38 周三 线程 线程安全 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码 线程安全问题都是由全局变量及静态变量引起的 若每个线程中对 ...

  3. Python并发编程系列之常用概念剖析:并行 串行 并发 同步 异步 阻塞 非阻塞 进程 线程 协程

    1 引言 并发.并行.串行.同步.异步.阻塞.非阻塞.进程.线程.协程是并发编程中的常见概念,相似却也有却不尽相同,令人头痛,这一篇博文中我们来区分一下这些概念. 2 并发与并行 在解释并发与并行之前 ...

  4. GIL 线程池 进程池 同步 异步 阻塞 非阻塞

    1.GIL 是一个全局解释器锁,是一种互斥锁 为什么需要GIL锁:因为一个python.exe进程中只有一份解释器,如果这个进程开启了多个线程都要执行代码 多线程之间要竞争解释器,一旦竞争就有可能出现 ...

  5. python GIL锁、进程池与线程池、同步异步

    一.GIL全局解释器锁 全局解释器锁 在CPython中,全局解释器锁(GIL)是一个互斥锁,它可以防止多个本机线程同时执行Python代码.之所以需要这个锁,主要是因为CPython的内存管理不是线 ...

  6. python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)

    9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型 池子内什么时候装线程:并发的任务属于I ...

  7. GIL锁、进程池与线程池、同步异步

    GIL锁定义 GIL锁:Global Interpreter Lock  全局解释器 本质上是一把互斥锁 官方解释: 在CPython中,这个全局解释器锁,也称为GIL,是一个互斥锁,防止多个线程在同 ...

  8. 进程| 线程 | 阻塞 | 阻塞&非阻塞 和 同步&异步

    阻塞&非阻塞 阻塞IO 调用之后一定要等到系统内核完成所有的操作之后才结束,因此它的缺点:CPU等待IO,处理能力得不到充分利用. 非阻塞IO 为了解决阻塞IO带来的一些问题,内核提供了非阻塞 ...

  9. Python之路(第三十六篇)并发编程:进程、同步异步、阻塞非阻塞

    一.理论基础 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都是围绕进程的概念展开的. 即使可以利用的cpu只有一个(早期的 ...

随机推荐

  1. PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)

    Hello!今天我们来学习一下这个神奇的图片处理的第三方函数库——PIL库 (本blog部分图片及代码来自网络) 这是一个支持图像存储.显示和处理的函数库,它能够处理几乎所有图像格式,可以完成对图像的 ...

  2. .htaccess 文件 访问二级域名 对应的 指定文件夹

    <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 绑定m.xxx.cc 到子目录m RewriteCond %{HTTP_ ...

  3. R语言读取EXCEL文件的各种方法

    路径问题 原始文件路径C:\Users\air\Desktop\1.txt R中有两种方法读取该路径 C:\\Users\\air\\Desktop\\1.txt C:/Users/air/Deskt ...

  4. 长沙学院APP之校园模块设计

    一.简单回顾 在上次的scrum冲刺中,我将整个长沙学院的APP做了一个基本的架构设计以及框架设计,确定好了APP的功能结构以及实现时所要达到的效果,并且做了一个简单的用户登录界面,由于所学知识有限, ...

  5. Android单元测试之二:本地测试

    Android单元测试之二:本地测试 本地测试 本地测试( Local tests):只在本地机器 JVM 上运行,以最小化执行时间,这种单元测试不依赖于 Android 框架,或者即使有依赖,也很方 ...

  6. [Swift]LeetCode78. 子集 | Subsets

    Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solut ...

  7. [Swift]LeetCode139. 单词拆分 | Word Break

    Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine ...

  8. [Swift]LeetCode204. 计数质数 | Count Primes

    Count the number of prime numbers less than a non-negative number, n. Example: Input: 10 Output: 4 E ...

  9. [Java]LeetCode284. 顶端迭代器 | Peeking Iterator

    Given an Iterator class interface with methods: next() and hasNext(), design and implement a Peeking ...

  10. [Swift]LeetCode485. 最大连续1的个数 | Max Consecutive Ones

    Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...