阻塞非阻塞,同步异步四种I/O方式

举一个去书店买书的例子吧:

阻塞:

你去书店买书,到柜台告诉店员,需要买一本APUE,然后一直在柜台等。(阻塞)

店员拿到书以后交给你。

非阻塞:

你去书店买书,到柜台告诉店员A,需要买一本APUE。但是你不在柜台等了,而是出去遛弯。(非阻塞)

隔几分钟回去柜台问一次:“我的书来了没有?”“我的书来了没有?”

终于有一次书来了,你就拿着书走了

I/O多路复用(poll/select/epoll):

去书店买书,告诉店员自己要买APUE,然后拿到一个号。每个顾客都是这样。

店员每拿一本书出来就叫号,这样每个人都能快速拿到自己的书

异步(libevent/libev/libuv):

你去书店买书,到柜台告诉店员A,需要买一本APUE。但是你丢下自己的地址,告诉店员,书你拿回来了直接叫快递送到下面这个地址就行了。

店员拿会书以后直接叫个快递,送到你家。

(如果是异步阻塞就是:店家拿到书以后会送给你,你还要一直在这等。比较奇葩)

阻塞/非阻塞则是 API 调用者(我)的等待方式。

同步/异步是API 被调用者(店员)的通知方式。

参考:https://ring0.me/2014/11/sync-async-blocked/

时间: 2024-10-07 22:20:15

阻塞非阻塞,同步异步四种I/O方式的相关文章

(转)同步异步/阻塞非阻塞 和 5种linux网络通信模型

会阻塞的函数:connect, accept,send/recv/sendto/recvfrom等读写函数. 不会阻塞的函数:bind, listen,socket, closesocket. linux网络通信模型有: 阻塞IO模型(同步),非阻塞IO模型(拷贝同步),IO复用模型(多线程同步),信号驱动IO模型((拷贝同步),异步IO模型(异步). node.js对同步/异步,阻塞非阻塞的解释: 线程在执行中如果遇到磁盘读写或网络通信(统称为I/O 操作),通常要耗费较长的时间,这时 操作系

同步/异步与阻塞/非阻塞

一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等).但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务.最常见的例子就是 SendMessage.该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回.当对方处理完毕以后,该函数才把消息处理函数所返回的值返回给调用者. B.

[Z] linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO

原文链接:http://blog.csdn.net/colzer/article/details/8169075 IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file descriptor(fd,文件描述符).而对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符).描述符就是一个数字,指向内核中一个结构体(文件路径,数据

linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO(转载)

IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file descriptor(fd,文件描述符).而对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符).描述符就是一个数字,指向内核中一个结构体(文件路径,数据区,等一些属性).那么我们的应用程序对文件的读写就通过对描述符的读写完成. linux将内存分为内核区,用户区.l

Python番外之 阻塞非阻塞,同步与异步,i/o模型

1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步:      所谓同步,就是在c端发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事. 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步:      异步的概念和同步相对.当c端一个异步过程调用发出后,调

网络通信之同步异步阻塞非阻塞

先看下面例子 同步阻塞: 令狐冲泡妹纸 ,打电话给妹纸 , 妹纸没有回应,令狐冲想我现在还不会独孤九剑,还不够NB,就老实点,令狐冲就一直等下去 同步非阻塞 令狐冲拍妹纸 , 打电话给妹纸 , 妹纸没有回应 , 令狐冲想老子猪脚光环,等会妹纸肯定会再打给我的,然后令狐冲就每隔10分钟瞅一眼电话. 异步阻塞 令狐冲泡妹纸 , 打电话给妹纸 , 妹纸没回应 , 然后令狐冲让林平之去等电话,妹纸打过来了 , 就让自己来接,然后令狐冲一直等林平之 异步非阻塞 令狐冲泡妹纸 ,  打电话给妹纸 , 妹纸没

同步 异步 阻塞 非阻塞 的一个例子说明

老张爱喝茶,废话不说,煮开水. 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶). 1 老张把水壶放到火上,立等水开.(同步阻塞) 老张觉得自己有点傻 2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有.(同步非阻塞) 老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶.水开之后,能大声发出嘀~~~~的噪音. 3 老张把响水壶放到火上,立等水开.(异步阻塞) 老张觉得这样傻等意义不大 4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了

30分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行

基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程.线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码.进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域的.进程可以理解为一个程序的基本边界.是

操作系统介绍-操作系统历史,IO,进程的三态,同步异步阻塞非阻塞

1.操作系统历史 2.进程,IO,同步异步阻塞非阻塞 操作系统历史: 手工操作: 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 手工操作方式两个特点: (1)用户独占全机.不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低. (2)CPU 等待手工操作.CPU的利用不充分. 批处理-磁带操作: 主机与输入机之间增加一个存储设备--磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入