异步调用和非阻塞调用之间的区别是什么?在阻塞和同步调用之间(请提供示例)?


当前回答

阻塞模型要求初始应用程序在I/O开始时阻塞。这意味着不可能同时重叠处理和I/O。同步非阻塞模型允许处理和I/O重叠,但它要求应用程序反复检查I/O的状态。这就留下了异步非阻塞I/O,允许处理和I/O重叠,包括I/O完成的通知。

其他回答

简单地说,

function sum(a,b){
return a+b;
}

为非阻塞。而异步则用于执行阻塞任务,然后返回阻塞任务的响应

非阻塞:该函数在栈上时不会等待。

异步:在函数调用离开堆栈后,该函数调用的工作可以继续进行

阻塞模型要求初始应用程序在I/O开始时阻塞。这意味着不可能同时重叠处理和I/O。同步非阻塞模型允许处理和I/O重叠,但它要求应用程序反复检查I/O的状态。这就留下了异步非阻塞I/O,允许处理和I/O重叠,包括I/O完成的通知。

非阻塞调用立即返回任何可用的数据:请求的全部字节数、更少的字节数或根本没有。

异步调用请求的传输将以其整体(全部)执行,但将在未来某个时间完成。

阻塞:在原语(同步或异步)处理完成后,控制返回到调用进程

非阻塞:调用后控制权立即返回进程