异步I/O和异步函数有什么区别?

Kit*_* Ho 11 asynchronous node.js

Node.js是一个异步I/O. 这究竟意味着什么?

通过生成另一个线程来创建异步函数来创建异步函数之间有什么不同吗?

例如

void asyncfuntion(){
    Thread apple = new Thread(){
       public void run(){
           ...do stuff
       }
    }
    apple.start()
}
Run Code Online (Sandbox Code Playgroud)

如果有差异,我可以在javascript中进行异步I/O吗?

Buh*_*ndi 15

异步I/O.

异步I/O(来自维基百科)

异步I/O或非阻塞I/O是一种输入/输出处理形式,允许其他处理在传输完成之前继续.

这意味着,如果一个进程想要执行一个read()write()同步调用,那么进程必须等到硬件完成物理I/O,以便可以通知它I/O的成功/失败操作.

在异步模式下,一旦进程异步发出读/写I/O,一旦I/O传递到硬件或在OS/VM中排队,系统调用就会立即返回.因此,不会阻止进程的执行(因此它被称为非阻塞I/O),因为它不需要等待系统调用的结果,它将在稍后接收结果.

异步功能

异步函数是一种通过事件处理程序(或回调函数)将数据返回给调用者的函数.可以随时调用回调函数(取决于异步函数完成所需的时间).这与同步函数不同,后者将在返回值之前执行其指令.

...我可以在java中进行异步I/O吗?

是的,Java NIO通过Selector提供非阻塞I/O支持.此外,Apache MINA是一个网络框架,还包括非阻塞I/O. 一个相关的SO问题回答了这个问题.

  • 这可能类似于要求Kit只是在线查找心脏手术的例子并做到这一点._Knowing_这是一回事,当你不知道你在看什么是另一回事时试图找到它. (3认同)