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只有一个(早期的 ...
随机推荐
- 快速搭建react项目骨架(按需加载、redux、axios、项目级目录等等)
一.前言 最近整理了一下项目骨架,顺便自定义了一个脚手架,方便日后使用.我会从头开始,步骤一步步写明白,如果还有不清楚的可以评论区留言.先大致介绍一下这个骨架,我们采用 create-react-ap ...
- linux学习:curl与netcat用法整理
CURL 语法: curl [option] [url] 常用参数:-A/--user-agent <string> 设置用户代理发送给服务器-b/--cookie <name=st ...
- synchronized 与 volatile 原理 —— 内存屏障的重要实践
单例模式的双重校验锁的实现: 第一种: private static Singleton _instance; public static synchronized Singleton getInst ...
- eclipse上的maven,添加依赖后无法自动下载相应的jar包
报错信息: Failed to read artifact descriptor for org.quartz-scheduler:quartz-jobs:jar:2.2.3 org.eclipse ...
- CSS面试细节整理(二)
5.css盒模型: CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式
- gc笔记2
空间分配担保:在发生MinorGC之前,虚拟机会检查老年代最大连续可用是否大于新生代所有对象的空间,如果这个条件成立,则minorgc时安全的
- Vue(day1)
一.起步 <!-- 开发环境版本,包含了有帮助的命令行警告 --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/v ...
- [Swift]LeetCode146. LRU缓存机制 | LRU Cache
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...
- [Swift]LeetCode396. 旋转函数 | Rotate Function
Given an array of integers A and let n to be its length. Assume Bk to be an array obtained by rotati ...
- [Swift]LeetCode961. 重复 N 次的元素 | N-Repeated Element in Size 2N Array
In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeate ...