我很难理解异步IO,所以我希望能够澄清一些误解,因为“#synchronous”异步"似乎被抛出了很多。如果重要的话,我的目标是进入扭曲的python,但我希望对基本概念有一个大致的理解。
异步编程究竟是什么?是使用支持异步IO的语言和操作系统进行编程吗?还是更普遍的东西?换句话说,异步IO是异步编程的一个独立概念吗?
答案 0 :(得分:3)
异步IO意味着当您的计算机等待某些内容时,应用程序不会被阻止。这里等待的定义不是处理。等待网络服务器?等待网络连接?等待硬盘驱动器响应盘片上的数据?所有这些都是IO。
通常情况下,您可以通过非常简单的方式同步编写:
let file = fs.readFileSync('file');
console.log(`got file ${file}`);
这会阻止,在readFileSync
返回你要求的内容之前不会发生任何事情。或者,您可以异步执行此操作,但不会阻止。这完全不同。在引擎盖下它可能正在使用中断。它可能是使用select语句轮询句柄。它通常使用与低级库(例如libc)的不同绑定。这就是你需要知道的全部内容。那会弄湿你的脚。以下是我们的看法,
fs.readFile(
'file',
function (file) {console.log(`got file ${file}`)}
);
在此,你提供了一个"回调"。该函数将立即请求文件,当它(您调用的函数,这里fs.readFile
)获取文件后,它将调用您的回调(这里是一个需要的函数)一个参数文件。
异步写东西很困难:
所有这些都是异步编程的艺术。