C# 【一】进程 , 线程 , 微线程 , 同步 , 异步 , 并发 , 并行 , 阻塞 , 非阻塞
一 理解篇
- 前言
本文仅仅用作借鉴使用,作者刚入行不久,所以请不小心看到这篇文章的朋友,手下留情。
本文以小故事的形式进行叙述,逻辑不通之处。请理解。
如有错误 ,欢迎指出。
谢谢。 最后修改时间: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# 【一】进程 , 线程 , 微线程 , 同步 , 异步 , 并发 , 并行 , 阻塞 , 非阻塞的更多相关文章
- Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就绪,挂起,运行) ,***协程概念,yield模拟并发(有缺陷),Greenlet模块(手动切换),Gevent(协程并发)
Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就 ...
- 进程&线程 同步异步&阻塞非阻塞
2015-08-19 15:23:38 周三 线程 线程安全 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码 线程安全问题都是由全局变量及静态变量引起的 若每个线程中对 ...
- Python并发编程系列之常用概念剖析:并行 串行 并发 同步 异步 阻塞 非阻塞 进程 线程 协程
1 引言 并发.并行.串行.同步.异步.阻塞.非阻塞.进程.线程.协程是并发编程中的常见概念,相似却也有却不尽相同,令人头痛,这一篇博文中我们来区分一下这些概念. 2 并发与并行 在解释并发与并行之前 ...
- GIL 线程池 进程池 同步 异步 阻塞 非阻塞
1.GIL 是一个全局解释器锁,是一种互斥锁 为什么需要GIL锁:因为一个python.exe进程中只有一份解释器,如果这个进程开启了多个线程都要执行代码 多线程之间要竞争解释器,一旦竞争就有可能出现 ...
- python GIL锁、进程池与线程池、同步异步
一.GIL全局解释器锁 全局解释器锁 在CPython中,全局解释器锁(GIL)是一个互斥锁,它可以防止多个本机线程同时执行Python代码.之所以需要这个锁,主要是因为CPython的内存管理不是线 ...
- python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)
9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型 池子内什么时候装线程:并发的任务属于I ...
- GIL锁、进程池与线程池、同步异步
GIL锁定义 GIL锁:Global Interpreter Lock 全局解释器 本质上是一把互斥锁 官方解释: 在CPython中,这个全局解释器锁,也称为GIL,是一个互斥锁,防止多个线程在同 ...
- 进程| 线程 | 阻塞 | 阻塞&非阻塞 和 同步&异步
阻塞&非阻塞 阻塞IO 调用之后一定要等到系统内核完成所有的操作之后才结束,因此它的缺点:CPU等待IO,处理能力得不到充分利用. 非阻塞IO 为了解决阻塞IO带来的一些问题,内核提供了非阻塞 ...
- Python之路(第三十六篇)并发编程:进程、同步异步、阻塞非阻塞
一.理论基础 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都是围绕进程的概念展开的. 即使可以利用的cpu只有一个(早期的 ...
随机推荐
- JS DOM事件学习
DOM查找方法: document.getElementByID("id") document.getElementsByTagName("tag") 返回一个 ...
- springboot-项目获取resources下文件碰到的问题(classPath下找不到文件和文件名乱码)
项目是spring-boot + spring-cloud 并使用maven 管理依赖.在springboot+maven项目下怎么读取resources下的文件实现文件下载? 怎么获取resourc ...
- springboot整合mybatis和mybatis-plus
问题 1 分页查询问题 2 mybatis的配置由mybatis变成mybatis-plus 3 Mybatis-plus中的Wrapper
- aarch64的架构:unrecognized command line option '-mfpu=neon'
不用添加这个'-mfpu=neon'的编译器选项了,因为这个架构下neon是默认启动的. 参考: https://lists.linaro.org/pipermail/linaro-toolchain ...
- python—文件处理
一.文件处理流程 1.打开文件,得到文件句柄并赋值 2.通过句柄对文件进行操作 3.关闭文件 二.文件打开模式 1.r,只读,默认模式 2.w,只写 3.a,追加 4. r+.w+.x+.a+ ,可读 ...
- 关于条件语句和 a && b
learn from javascript cookbook if (element == 'ab') array[index] = "**"; 该语句 等价于 if (eleme ...
- 剑指offer【书】之简历抒写
项目介绍1.剪短的项目背景简短的项目背景,比如项目的规模,开发的软件的功能.目标用户等2.完成的任务这个要写详细,要让面试官对自己的工作一目了然.在用词上要注意区分“参与”和“负责”:如果只就用“负责 ...
- FFmpeg 结构体学习(五): AVCodec 分析
在上文FFmpeg 结构体学习(四): AVFrame 分析我们学习了AVFrame结构体的相关内容.本文,我们将讲述一下AVCodec. AVCodec是存储编解码器信息的结构体.下面我们来分析一下 ...
- [Swift]LeetCode773. 滑动谜题 | Sliding Puzzle
On a 2x3 board, there are 5 tiles represented by the integers 1 through 5, and an empty square repre ...
- android自动化必备之SDK
进入到SDK包中,通过打开SDK manager.exe即可看到SDK管理界面,可能部分童靴发现一直在加载出不来,我们需要设置代理来解决: 选择工具栏上的Tools->Options打开如下窗口 ...