异步队列

关于同步,异步,阻塞,非阻塞,IOCP/epoll,select/poll,AIO ,NIO ,BIO的总结

谁说胖子不能爱 提交于 2019-11-27 08:04:44
昨天面试的时候没有答上来同步与异步,阻塞与非阻塞的区别,回来搜了一下,发现这篇文章写的不错,转载学习一下,链接如下: https://blog.csdn.net/chen8238065/article/details/48315085 相关资料 IO基本概念 Linux环境 同步异步阻塞非阻塞 同步与异步 阻塞与非阻塞 IO模型Reference Link 阻塞IO模型 非阻塞IO模型 IO复用模型 信号驱动异步IO模型 异步IO模型 总结 AIOBIONIO Java对BIONIOAIO的支持 AIOReference Link1ReferenceLink2 NIOReference Link epollselectpollReference Link LTETepoll select的几大缺点 poll实现 epollreference Link 总结 IOCP ReferenceLinkConcreteRealization 相关资料 IO基本概念 Linux环境 Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符)。对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)

【并发编程必备基础之进程】

假如想象 提交于 2019-11-27 02:51:37
原文: http://106.13.73.98/__/10/ 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样,每个核都会用到多道技术

【并发编程必备基础之进程】 -- 2019-08-12 12:41:39

China☆狼群 提交于 2019-11-27 02:46:29
原文: http://106.13.73.98/__/10/ 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样,每个核都会用到多道技术

python之并发编程

五迷三道 提交于 2019-11-27 02:20:52
一、什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。 进程理论 程序:一堆死代码 进程:正在运行的程序 进程是资源单位,进程与进程之间数据是绝对意义上的物理隔离,但是可以利用某些技术实现数据交互(消息队列) 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。 并发性:任何进程都可以同其他进程一起并发执行 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位; 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进 结构特征:进程由程序、数据和进程控制块三部分组成。 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变   注意:同一个程序执行两次,就会在操作系统中出现两个进程

并发编程

六月ゝ 毕业季﹏ 提交于 2019-11-27 00:42:35
操作系统的发展史 首先是手工操作-穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。 手工操作方式两个特点:   (1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。   (2)CPU 等待手工操作。CPU的利用不充分。 批处理-磁带存储 批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令) 联机批处理系统   首先出现的是联机批处理系统,即作业的输入/输出由CPU来处理。 脱机批处理系统   为克服与缓解:高速主机与慢速外设的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出脱离主机控制。 卫星机:一台不与主机直接相连而专门用于与输入/输出设备打交道的。   其功能是:   (1)从输入机上读取用户作业并放到输入磁带上。   (2)从输出磁带上读取执行结果并传给输出机。   这样,主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。主机与卫星机可并行工作,二者分工明确,可以充分发挥主机的高速计算能力。 脱机批处理系统:20世纪60年代应用十分广泛,它极大缓解了人机矛盾及主机与外设的矛盾。   不足:每次主机内存中仅存放一道作业

【并发编程必备基础之进程】 -- 2019-08-11 18:55:35

南笙酒味 提交于 2019-11-27 00:06:58
原文: http://106.13.73.98/__/10/ 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样,每个核都会用到多道技术

并发编程基础

瘦欲@ 提交于 2019-11-26 19:59:05
单道技术 程序只能一个运行完毕之后,才可以运行下一个程序。 多道技术 1.产生背景:针对单核,实现并发 ps:现在的主机一般多是多核,那么每个核都会利用多道技术。有4个cpu,运行与cpu的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。 强调:遇到io切换,占用cpu时间过长也切换,核心在于切换之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切换走的位置继续运行。 1.空间上的复用 ​ 多个程序共用一套计算机硬件 2.时间上的复用(切换+保存状态) ​ 1.当你一个程序遇到IO操作 操作系统会剥夺该程序的CPU执行权限(提高了CPU的利用率并且也不影响程序的执行效率) ​ 2.当一个程序长时间占用CPU 操作系统也会剥夺该程序的CPU执行权限(降低了程序的执行效率) 并发:看起来像同时运行的就可以 并行:真正意义上的同时执行 单核的计算机不能实现并行,但是可以实现并发。 进程与程序 程序:是由一堆代码组成的,是指令,数据及其组织形式的描述,进程是程序的实体。 进程:就是正在运行的程序。 进程与程序中的区别 程序是一个指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。 程序可以作为一种软件资料长期存在,而进程是有一定生命期的。

socket阻塞与非阻塞,同步与异步【转】

岁酱吖の 提交于 2019-11-26 18:31:43
原文: socket阻塞与非阻塞,同步与异步 作者: huangguisu 1. 概念理解 在进行网络编程时,我们常常见到 同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock) 四种调用方式: 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 也就是必须一件一件事做 , 等前一件做完了才能做下一件事。 例如普通 B/S 模式(同步):提交请求 -> 等待服务器处理 -> 处理完毕返回 这个期间客户端浏览器不能干任何事 异步: 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。 例如 ajax请求( 异步) : 请求通过事件触发 -> 服务器处理(这是浏览器仍然可以作其他事情) -> 处理完毕 阻塞 阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。 有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同 步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。 例如,我们在s ocket 中调用r ecv 函数,如果缓冲区中没有数 据,这个函数就会一直等待,直到有数据才返回。而此时

.NET进阶篇06-async异步、thread多线程2

让人想犯罪 __ 提交于 2019-11-26 17:24:37
知识需要不断积累、总结和沉淀,思考和写作是成长的催化剂 内容目录 一、线程Thread 1、生命周期 2、后台线程 3、静态方法 1.线程本地存储 2.内存栅栏 4、返回值 二、线程池ThreadPool 1、工作队列 2、工作线程和IO线程 3、和Thread区别 4、定时器 一、线程Thread .NET中线程操作封装为了Thread类,可以让开发者对线程进行直观操作。Thread提供了 实例方法用于管理线程的生命周期和静态方法用于控制线程的一些访问存储等一些外在的属性,相当于工作空间环境变量了 1、生命周期 线程的生命周期有 创建、启动、可能挂起、等待、恢复、异常、然后结束 。用Thread类可以容易控制一个线程的全生命周期 Thread类的构造函数重载可以接受 ThreadStart无参数和ParameterizedThreadStart有参数的委托 ,然后调用实例的 Start()方法 启动线程。Thread的构造函数的带有参数的委托,参数是一个object类型,因为我们可以传入任何信息 Thread t1 = new Thread(() => { Console.WriteLine($"新线程 {Thread.CurrentThread.ManagedThreadId.ToString("00")}");});t1.Start();Thread t2 = new

【并发编程必备基础之进程】 -- 2019-08-09 10:40:17

两盒软妹~` 提交于 2019-11-26 16:06:32
原文: http://106.13.73.98/__/10/ 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样,每个核都会用到多道技术