异步调用和非阻塞调用之间的区别是什么?在阻塞和同步调用之间(请提供示例)?
当前回答
阻塞模型要求初始应用程序在I/O开始时阻塞。这意味着不可能同时重叠处理和I/O。同步非阻塞模型允许处理和I/O重叠,但它要求应用程序反复检查I/O的状态。这就留下了异步非阻塞I/O,允许处理和I/O重叠,包括I/O完成的通知。
其他回答
synchronous | asynchonous | |
---|---|---|
block | Block I/O must be a synchronus I/O, becuase it has to be executed in order. Synchronous I/O might not be block I/O | Not exist |
non-block | Non-block and Synchronous I/O at the same time is polling/multi-plexing.. | Non-block and Asynchronous I/O at the same time is parallel execution, such as signal trigger… |
block/non-block描述了初始化实体本身的行为,它意味着实体在等待I/O完成期间所做的事情 同步/异步描述了I/O初始化实体和I/O执行器(例如操作系统)之间的行为,它意味着这两个实体是否可以并行执行
非阻塞调用立即返回任何可用的数据:请求的全部字节数、更少的字节数或根本没有。
异步调用请求的传输将以其整体(全部)执行,但将在未来某个时间完成。
异步指的是并行完成的事情,比如另一个线程。 非阻塞通常指轮询,即检查给定条件是否成立(套接字是可读的,设备有更多的数据,等等)。
非阻塞:该函数在栈上时不会等待。
异步:在函数调用离开堆栈后,该函数调用的工作可以继续进行
简单地说,
function sum(a,b){
return a+b;
}
为非阻塞。而异步则用于执行阻塞任务,然后返回阻塞任务的响应
推荐文章
- 什么时候我应该在ASP中使用异步控制器。净MVC吗?
- 理解设置
- 如何使HTTP请求在PHP和不等待响应
- 反应-显示加载屏幕,而DOM是渲染?
- 如何正确地读取异步/等待文件?
- 使用Moq模拟单元测试的异步方法
- 如何使用JUnit来测试异步进程
- Kotlin协程中的启动/连接和异步/等待之间有什么区别
- CompletableFuture, Future和RxJava的Observable之间的区别
- 为什么要在c#中使用Task<T>而不是ValueTask<T> ?
- Asyncio。Gather vs asyncio.wait
- 同步调用异步方法
- 所有异步forEach回调完成后的回调
- 并发、并行和异步方法之间的区别是什么?
- 同步调用一个异步Javascript函数