精华内容
下载资源
问答
  • 阻塞与非阻塞

    2015-10-10 09:01:53
       何为阻塞?  从该网络通讯过程来理解一下何为阻塞 :  ...在以上过程中若连接还没...阻塞式网络 IO 的特点:多线程处理多个连接。每个线程拥有自己的栈空间并且占用一些 CPU 时间。每个线程遇到外部为准备
    
        
    何为阻塞? 

    从该网络通讯过程来理解一下何为阻塞 : 

    在以上过程中若连接还没到来,那么 accept 会阻塞 , 程序运行到这里不得不挂起, CPU 转而执行其他线程。 

    在以上过程中若数据还没准备好, read 会一样也会阻塞。 

    阻塞式网络 IO 的特点:多线程处理多个连接。每个线程拥有自己的栈空间并且占用一些 CPU 时间。每个线程遇到外部为准备好的时候,都会阻塞掉。阻塞的结果就是会带来大量的进程上下文切换。且大部分进程上下文切换可能是无意义的。比如假设一个线程监听一个端口,一天只会有几次请求进来,但是该 cpu 不得不为该线程不断做上下文切换尝试,大部分的切换以阻塞告终。 



    何为非阻塞? 

    下面有个隐喻: 

    一辆从 A 开往 B 的公共汽车上,路上有很多点可能会有人下车。司机不知道哪些点会有哪些人会下车,对于需要下车的人,如何处理更好? 

    1. 司机过程中定时询问每个乘客是否到达目的地,若有人说到了,那么司机停车,乘客下车。 ( 类似阻塞式 ) 

    2. 每个人告诉售票员自己的目的地,然后睡觉,司机只和售票员交互,到了某个点由售票员通知乘客下车。 ( 类似非阻塞 ) 

    很显然,每个人要到达某个目的地可以认为是一个线程,司机可以认为是 CPU 。在阻塞式里面,每个线程需要不断的轮询,上下文切换,以达到找到目的地的结果。而在非阻塞方式里,每个乘客 ( 线程 ) 都在睡觉 ( 休眠 ) ,只在真正外部环境准备好了才唤醒,这样的唤醒肯定不会阻塞。 

      非阻塞的原理 

    把整个过程切换成小的任务,通过任务间协作完成。 

    由一个专门的线程来处理所有的 IO 事件,并负责分发。 

    事件驱动机制:事件到的时候触发,而不是同步的去监视事件。 

    线程通讯:线程之间通过 wait,notify 等方式通讯。保证每次上下文切换都是有意义的。减少无谓的进程切换。
    展开全文
  • socket阻塞与非阻塞

    2018-04-14 19:17:49
     阻塞式网络IO的特点:多线程处理多个连接。每个线程拥有自己的栈空间并且占用一些CPU时间。每个线程遇到外部为准备好的时候,都会阻塞掉。阻塞的结果就是会带来大量的进程上下文切换。且大部分进程上下文...
    何为阻塞?  

    从该网络通讯过程来理解一下何为阻塞: 

    在以上过程中若连接还没到来,那么接受阻塞,程序运行到这里不得不挂起,CPU转而执行其他线程。 

    在以上过程中若数据还没准备好,请阅读会一样也会阻塞。 

    阻塞式网络IO的特点:多线程处理多个连接。每个线程拥有自己的栈空间并且占用一些CPU时间。每个线程遇到外部为准备好的时候,都会阻塞掉。阻塞的结果就是会带来大量的进程上下文切换。且大部分进程上下文切换可能是无意义的。比如假设一个线程监听一个端口,一天只会有几次请求进来,但是该cpu不得不为此线程不断做上下文切换尝试,大部分的切换以阻塞告终。 



    何为非阻塞? 

    下面有个隐喻: 

    一辆从A开往B的公共汽车上,路上有很多点可能会有人下车。司机不知道哪些点会有哪些人会下车,对于需要下车的人,如何处理更 ? 

    1.司机过程中定时询问每个乘客是否到达目的地,若有人说到了,那么司机停车,乘客下车。(类似阻塞式) 

    2.每个人告诉售票员自己的目的地,然后睡觉,司机只和售票员交互,到了某个点由售票员通知乘客下车。(类似非阻塞) 

    很显然,每个人要达某某目的地可以认为是一个线程,司机可以认为是CPU。在阻塞式里面,每个线程需要不断的轮询,上下文切换,以达到找到目的地的结果。而在非阻塞方式里,每个乘客(线程)都在睡觉(休眠),只在真正外部环境准备好了才唤醒,这样的唤醒肯定不会阻塞。 

      非阻塞的原理 

    把整个过程分类中翻译e月刊小的任务,通过任务间协作完成。 

    由一个专门的线程来处理所有的IO事件,并负责分发。 

    事件驱动机制:事件到的时候触发,而不是同步的去监视事件。 

    线程通讯:线程之间通过等待,通知等方式通讯。保证 -次上下文切换都是有意义的。减少无谓的进程切换。
    展开全文
  • 何为阻塞?  从该网络通讯过程来理解一下何为阻塞 :  ...阻塞式网络 IO 的特点:多线程处理多个连接。每个线程拥有自己的栈空间并且占用一些 CPU 时间。每个线程遇到外部为准备好的时候,都会阻塞
    何为阻塞? 

    从该网络通讯过程来理解一下何为阻塞 : 

    在以上过程中若连接还没到来,那么 accept 会阻塞 , 程序运行到这里不得不挂起, CPU 转而执行其他线程。 

    在以上过程中若数据还没准备好, read 会一样也会阻塞。 

    阻塞式网络 IO 的特点:多线程处理多个连接。每个线程拥有自己的栈空间并且占用一些 CPU 时间。每个线程遇到外部为准备好的时候,都会阻塞掉。阻塞的结果就是会带来大量的进程上下文切换。且大部分进程上下文切换可能是无意义的。比如假设一个线程监听一个端口,一天只会有几次请求进来,但是该 cpu 不得不为该线程不断做上下文切换尝试,大部分的切换以阻塞告终。 



    何为非阻塞? 

    下面有个隐喻: 

    一辆从 A 开往 B 的公共汽车上,路上有很多点可能会有人下车。司机不知道哪些点会有哪些人会下车,对于需要下车的人,如何处理更好? 

    1. 司机过程中定时询问每个乘客是否到达目的地,若有人说到了,那么司机停车,乘客下车。 ( 类似阻塞式 ) 

    2. 每个人告诉售票员自己的目的地,然后睡觉,司机只和售票员交互,到了某个点由售票员通知乘客下车。 ( 类似非阻塞 ) 

    很显然,每个人要到达某个目的地可以认为是一个线程,司机可以认为是 CPU 。在阻塞式里面,每个线程需要不断的轮询,上下文切换,以达到找到目的地的结果。而在非阻塞方式里,每个乘客 ( 线程 ) 都在睡觉 ( 休眠 ) ,只在真正外部环境准备好了才唤醒,这样的唤醒肯定不会阻塞。 

      非阻塞的原理 

    把整个过程切换成小的任务,通过任务间协作完成。 

    由一个专门的线程来处理所有的 IO 事件,并负责分发。 

    事件驱动机制:事件到的时候触发,而不是同步的去监视事件。 

    线程通讯:线程之间通过 wait,notify 等方式通讯。保证每次上下文切换都是有意义的。减少无谓的进程切换。
    展开全文
  • 在过程语句initial或者always中,有阻塞于非阻塞两种赋值方式,对于初学者而言两种赋值语句使用容易令人迷惑,下面我们就简单介绍一下这两种赋值语句使用。 1、阻塞赋值语句 操作符为“=” 语法格式:变量=...

    在过程语句initial或者always中,有阻塞于非阻塞两种赋值方式,对于初学者而言两种赋值语句的使用容易令人迷惑,下面我们就简单介绍一下这两种赋值语句的使用。

    1、阻塞赋值语句

    操作符为“=”
    语法格式:变量=表达式;例:x=y
    在一个语句块中,阻塞赋值语句是按顺序执行的,即执行完前一条语句才能接下去执行下一条,因此被称为阻塞赋值。
    阻塞赋值语句的特点为:
    1)阻塞赋值语句的执行顺序为,先计算右边的表达式,然后立刻将结果赋值给左边的变量,与时间无关;
    2)在串行语句块中,阻塞赋值语句顺序执行,在并行语句块中,同时执行。

    2、非阻塞赋值语句

    操作符:“<="
    语法格式:变量<=表达式;例:x<=y
    非阻塞赋值顾名思义就是不会阻挡住后面赋值语句的进行,所以在一个语句块中,各条语句的执行是并发进行的不会对后面语句产生影响。
    特点如下:
    1)非阻塞赋值语句的执行特点为,先计算右边的表达式,然后等待延迟结束将其赋值给左边的变量;
    2)各条语句并发执行;

    3、区别与应用

    下面我们由一个例子来说明一下,阻塞与非阻塞赋值,对电路电路的逻辑功能以及电路结构的影响。
    exp1:

    module DFF_1(clk,q,in_1);
    	input clk,in_1;
    	output q;
    	reg q;
    	reg temp;
    	always@(posedge clk)
    	begin
    		temp=in_1;
    		q=temp;
    	end
    emdmodule 
    

    exp2:

    module DFF_2(clk,q,in_1);
    	input clk,in_1;
    	output q;
    	reg q;
    	always@(posedge clk) q=in;
    endmodule
    

    exp3:

    module DFF_3(clk,q,in_1);
    	input clk,in_1;
    	output q;
    	reg q;
    	reg temp;
    	always@(posedge clk)
    	begin
    		temp<=in_1;
    		q<=temp;
    	end
    endmodule 
    

    在epx1中in_1先赋值给temp,然后temp赋值给q,实际上与epx2是等价的。都是一个d触发器。
    而在epx3中两条语句是并发进行的,in_1赋值给temp的同时,temp也将上一个时钟的计算储存的值赋给q,实际上是两个D触发器。
    想要exp1也综合出两个触发器,需要将两个表达式调整顺序:

    q=temp;
    temp=in_1;
    
    展开全文
  • 阻塞IO与非阻塞IO

    2019-06-04 10:02:45
    异步:异步的和同步正好相反,一旦发出调用,调用就立刻返回,当有返回结果是调用者就会受到对应的通知,异步最大的特点就是通知。 阻塞和非阻塞 阻塞和非阻塞关注的是程序在等待调用结果时的状态。 阻...
  • 1、将CAsyncSocket datachannel设置为同步阻塞模式去接收数据,几十 M 文件都可以接收得到,可是当我不把CAsyncSocket datachannel设置为同步阻塞(如以上代码)情况下去接收数据,最多只能接收66KB文件 ,...
  • 以下从两个典型的例子以及多个角度去分析得到与验证阻塞赋值与非阻塞赋值的区别,以及各自的特点。 非阻塞赋值与阻塞赋值特性 1、非阻塞赋值的特性: 赋值语句的流程: a)计算右边的表达式得到结果 b)将结果...
  • 对于node有一个很大的特点就是非阻塞io,这也是由于node使用了单线程,避免了多线程之间通信的同步以及线程之间切换带来的损耗,从而大大提神了性能。由于单线程的原因,所以需要借助非阻塞io来实现快速处理响应用户...
  • 同步、异步和阻塞、非阻塞针对是两个不同维度: 同步关键是有序,强调有序任务序列,下一步操作依赖这一步。 异步关键是处理调用对象在处理完成后主动通知,可通过回调,通知,状态变更等,依赖具体...
  • ②阻塞性赋值语句执行顺序是:先将等号右边值赋给等号左边,仿真时间没有关系。 对于赋值顺序举个例子: b=a; c=b; 赋值前后顺序就是:先将a值赋给b,然后在将b值赋给c。 2.非阻塞性赋值语句 ...
  • 2. 阻塞与非阻塞的实例 2.1 阻塞代码实例 2.2 非阻塞代码实例 3. Node.js的事件驱动 4. 事件循环实例 1. Node.js异步编程的特点 参考资料:...
  • IO阻塞与IO非阻塞2

    2018-05-09 17:35:00
    ---恢复内容开始--- 事件驱动编程思想:  一种编程范式 阻塞IO:只发了一次系统调用 触发方式:  1 水平触发 select属于水平触发  2 边缘触发 ...异步 IO 最大的特点,全程无阻...
  • 以下从两个典型的例子以及多个角度去分析得到与验证阻塞赋值与非阻塞赋值的区别,以及各自的特点。 非阻塞赋值与阻塞赋值特性1、非阻塞赋值的特性:赋值语句的流程:a)计算右边的表达式得到结果b)将结果赋值到左边...
  • 以下整理一下操作系统中同步、异步、阻塞和非阻塞之间关系和异同点,并附部分代码解释。 一、同步异步 【同步简述】:当发出一个“调用”时,在没有得到结果之前,该“调用”就不返回,“调用者”需要一直...
  • 在windows平台下socket有阻塞型和非阻塞区分。 阻塞型socket一个特点就是在某些socket api上调用时会阻塞,知道操作完成。比如send, recv,在这样socket上比较容易开发,但阻塞导致调用线程挂起也是很...
  • java阻塞非阻塞

    2014-01-02 11:13:21
    阻塞与非阻塞IO JAVA IO的各种流是阻塞的,这意味着,当一个线程调用read()或write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。 该线程在此期间不能再干任何事情了。   阻塞式网络 IO 的特点:...
  • 1.队列介绍 今天要来讲一下java里队列,队列,顾名思义,排队列,既然按排队...特点:先进先出 效率:插入数据项和移除数据项时间复杂度都是O(1),因为插入是一个一个而且只能在一端插入,取出也只能一个一个从
  • 第一次深入了解nio,都会感觉非常难理解阻塞与非阻塞,同步和异步阻塞,非阻塞,下面来看看吧 一、nio 和 netty 是什么? 1、Java NIO(New IO)是一个可以替代标准Java IO APIIO API(从Java 1.4开始) 2、 Netty ...
  • 并发编程1) 操作系统发展史1.1 穿孔卡片1.2 批处理1.3 脱机批处理(现代操作系统设计原理)2) 多道技术 (基于单核背景下产生):单道多道空间上复用时间上复用并发并行并发:并行:面试题:3) 进程1....
  • 本篇文字是关于IO多路复用更深入一步总结,上一篇Python之进程+线程+协程(事件驱动模型、IO多路复用、selectepoll)对IO多路复用进行了概念性分析,本篇则是对阻塞IO、非阻塞IO、异步进行通俗性比较和...
  • ~blocking IO  在linux中,默认情况下所有的socket都是...blocking IO的特点就是在IO执行的两个阶段都被block了。 ~non-blocking IO linux下,可以通过设置socket使其变为non-blocking。当对一个n
  • Node.js是一个让JavaScript运行在服务器端开发平台,它让JavaScript触角伸到了服务器端,可以PHP、JSP...为了实现上述目标追求,Node.js创建者Ryan Dahl鬼才般使用单线程、非阻塞I/O、事件驱动这三个方法。
  • epoll水平触发、边沿触发与非阻塞I/O模型epoll水平触发、边沿触发与非阻塞I/O模型水平触发与边沿触发非阻塞I/Oepoll水平触发导致效率低下重要原因 epoll水平触发、边沿触发与非阻塞I/O模型 epoll作为多路I/O复用在...
  • 特点: 1) 不需要建立链接。 2) 不需要知道对方是否收到。 3) 数据不安全 4) 传输速度快 5)能支持并发 6) 不会粘包 7) 无需先启动服务端再启动客户端 优点: - 传输速度快 - 能支持并发 - 不会粘包 缺点 - ...
  • 同步异步 牵扯到这两个概念前提是两个线程会有某些微妙...特点是必须等待,等时间不能干其他任何事情(排队时候还是可以玩哈手机,抽根烟,但是蹲位有没有空出来需要自己去判断)。 异步场景:去了厕所还
  • 阻塞I/O和非阻塞I/O区别在于系统在输入输出期间,能不能接收输入。 举个例子:餐厅服务员招待客人 阻塞I/O:餐厅有多个服务员(多线程),一个服务员对应一个客人,客人从点菜到点菜结束期间,服务员都会被...
  • 之前参考了这篇文章,下面写一写笔记 阻塞IO 非阻塞IO 1.blocking IO linux中默认的socket都是阻塞的 ...特点:在数据准备数据拷贝两个阶段进程都是阻塞的 2.non blocking IO linux下,可以通过设...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 304
精华内容 121
关键字:

阻塞与非阻塞的特点