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