首页
学习
活动
专区
圈层
工具
发布
综合排序最热优先最新优先
时间不限
同步、异步阻塞阻塞
阻塞阻塞   应用进程请求I/O操作时,如果数据未准备好,如果请求立即返回就是非阻塞,不立即返回就是阻塞。简单说就是做一件事如果不能立即获得返回,需要等待,就是阻塞,否则就可以理解为阻塞阻塞 阻塞阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。 同步/异步阻塞/阻塞的组合 同步阻塞形式: 等待执行结果是一直等待,执行时线程挂起(未对fd 设置O_NONBLOCK 标志位的read/write 操作) 同步阻塞形式:等待执行结果是一直等待, 执行时函数立即返回(对fd 设置O_NONBLOCK 标志位的read/write 操作) 异步阻塞形式:不是在处理消息时一直等待(通过状态、通知,或回调函数通知主调函数select ),而是在等待消息被触发时被阻塞 异步阻塞形式:在处理消息是不等待,在执行消息是也不等待。
菲宇
2019-06-13
4.1K0
标签:
同步异步阻塞阻塞
同步/异步阻塞/阻塞的区别 同步与异步:针对数据访问的方式,程序是主动去询问操作系统数据准备好了么,还是操作系统在数据准备好的时候通知程序。 阻塞异步的区别: 阻塞可以通过轮询或者信号/事件机制来实现,其目的是由内核通知我们何时可以启动一个I/O操作 而异步I/O模型是在内核IO完成后,由内核通知我们I/O操作已经完成。 可以是阻塞阻塞阻塞则一直在等待内核/应用程序把IO数据准备好,阻塞则是直接返回内核/应用程序是否已经准备好数据。 应用程序框架:同步或异步。 框架若使用异步IO,则通常需要应用程序<--->内核之间是非阻塞的。一旦内核<--->应用程序数据IO完成,则执行回调函数,执行一定的操作。 参考文章: 怎样理解阻塞阻塞与同步异步的区别? IO多路复用,同步,异步阻塞阻塞 区别 关于异步,同步,阻塞阻塞 解读I/O多路复用技术
欠扁的小篮子
2018-04-11
4.1K0
标签:
同步 异步 阻塞 阻塞
以调用函数为例, 同步指的是调用方主动查询返回结果,异步是等待被调用方通知查询结果 阻塞是等待返回结果的时间内挂起,阻塞是等待返回结果的时间内可以干其他事情. 同步和阻塞完全不是一件事,是否同步指的是获取返回结果的方式,是否阻塞指的是等待获取结果的时间内是否可以干其他事情
东营浪人
2019-12-20
3.5K0
标签:
阻塞 & 阻塞 | 同步 & 异步
这里讲的都是基于IO的 阻塞阻塞、同步、异步 ---- 一个典型的IO操作包括了两个阶段,数据准备和数据读写。比如说现在要使用 recv 执行一个读操作,数据就绪就是远端是否有数据可读。 当IO工作在阻塞状态下的时候,如果数据没有就绪,recv就会阻塞当前线程;如果说IO工作在阻塞状态下,会立即返回。 返回值-1的话,就说明连接出现问题,连接异常;如果返回值是0,且errno是EAGIN的话,就说明这是一个正常的阻塞,返回数据未就绪状态。 一个同步IO接口的示例: char buf[1024]; int sz = recv(sockfd,buf,1024,0); //阻塞:一直在这儿死等 //阻塞:时不时的回来问一下 if(sz>0) ---- 五种IO模型 阻塞阻塞: 多路IO复用 信号驱动: 这里就完全放飞自我了 异步: ---- Reactor反应堆模型 One loop per thread
看、未来
2021-10-09
3.9K0
标签:
同步、异步阻塞阻塞
同步、异步阻塞阻塞(网络编程) 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。 阻塞 阻塞阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。 不过小明仍然一直等待“叮”的声音(看起来很傻,不是吗)最蠢 异步阻塞:仍然是那个会“叮”一声的下载软件,小明提交下载任务后就去干别的,听到“叮”的一声就知道完成了。 (最机智) 也就是说,同步/异步是下载软件的通知方式,或者说 API 被调用者的通知方式。阻塞/阻塞则是小明的等待方式,或者说 API 调用者的等待方式。 在不同的场景下,同步/异步阻塞/阻塞的四种组合都有应用。
张俊怡
2018-04-24
3K0
标签:
深入理解--异步阻塞同步和阻塞异步阻塞
异步阻塞的概念实际上已经出现了很长一段时间。但是异步真正开始流行起来,是因为AJAX技术逐渐成为主流的web开发技术。 同步 ,异步阻塞阻塞这几个概念相互之间联系紧密,很难区分。很多程序员都不知道它们之间的具体的不同。 本文就会详细讨论这个问题,希望能帮助读者更好的了解这几个概念 同步和阻塞 首先,我们先开始介绍与异步阻塞对立的两个概念:同步和阻塞 对于web开发者来说,理解同步的概念相对比较容易,因为HTTP协议就是一个同步的协议 这通常会造成性能的瓶颈,因为这个方法会阻塞,导致无法继续执行随后的操作。 异步阻塞 异步阻塞就是同步和阻塞的相反面。 通常来说,系统调用会进入内核,一般都是阻塞的,所以read操作往往是阻塞的,会等待可用数据,并且将线程休眠。 现在,我们应该对于异步阻塞的概念已经有所了解了。
desperate633
2018-08-22
1.5K0
标签:
同步、异步阻塞阻塞
同步和异步 同步:是用户线程发起IO请求需要等待或者轮询内核IO操作完成后才能继续执行。 异步:用户线程发起IO请求后任需要继续执行,当内核IO操作完成后会通知用户线程,或者调用用户注册的回调函数。 阻塞阻塞 阻塞:是指IO操作需要彻底完成后才能返回用户空间。 阻塞:是指IO操作被调用后立即返回一个状态值,无需等待IO操作完成。 同步和异步(线程间调用) 同步和异步是对应调用者和被调用者,他们是线程之间的关系,两个线程之间要么是同步的,要么是异步的。 阻塞阻塞(线程内调用) 阻塞阻塞是对于一个线程来讲的,在任意时刻,线程要么是处于阻塞的,要么是出于阻塞的。 阻塞阻塞关注的程序等待调用结果(消息,返回值)时的状态。 阻塞调用是指调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。 阻塞调用是指不能立刻得到返回结果之前,该调用就不会阻塞当前线程。
lexingsen
2022-02-25
3.1K0
标签:
IO - 同步,异步阻塞阻塞
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和阻塞(non-blocking)IO分别是什么,到底有什么区别? 而在用户进程这边,整个进程会被阻塞。当kernel一直等到数据准备好了,它就会将数据从kernel中拷贝到用户内存,然后kernel返回结果,用户进程才解除block的状态,重新运行起来。 does not cause the requesting process to be blocked; 两者的区别就在于synchronous IO做”IO operation”的时候会将process阻塞
后端技术探索
2018-08-09
3K0
标签:
同步异步阻塞阻塞详解
相反的,异步就是,调用该函数后,不等待函数结果返回,比如说开一个线程,让函数在线程运行,这叫异步阻塞阻塞 对于阻塞阻塞,其实更关心的是进程的状态,如果函数返回结果之前,主进程被挂起,也就是处于阻塞状态,那这时候整个过程是阻塞的;如果结果返回之前,主进程状态是非阻塞的,那整个过程是非阻塞。 这时候关心的是你是否在等待结果,有没有不管这件事 阻塞阻塞: 你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果,如果是非阻塞式调用 在这里阻塞阻塞与是否同步异步无关。跟老板通过什么方式回答你结果无关。 这时候关心的是你是否立即有答复,你是否离开了书店 c++ socket阻塞阻塞代码 阻塞模式下的socket读取 int main(){ #创建和绑定socket,creat和bind函数
opencode
2022-12-26
2.7K0
标签:
同步、异步阻塞阻塞
同步与异步   同步和异步关注的是消息通信机制。同步就是在发出一个【调用】时,在没有拿到结果之前,该【调用】就不返回,但是一旦调用返回,就得到返回值了。    异步:执行一个操作之后,可以去执行其他操作,然后等待通知再回来执行刚才没执行完的操作。 1. 阻塞阻塞   阻塞阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。    阻塞调用是指调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。   阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。    阻塞阻塞与是否同步异步无关。 总结: 阻塞:进程给CPU传达一个任务之后,一直在等待CPU处理完成,然后才执行后边的操作。    阻塞:进程给CPU传达一个任务之后,继续处理后续的操作,隔段时间再来询问之前的操作是否完成,这样的机制也叫轮询。   
py3study
2020-01-16
2.7K0
标签:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档