我很难理解异步IO,所以我希望澄清我的一些误解,因为“异步”这个词似乎被抛出了很多地方。如果这很重要,我的目标是深入了解扭曲的python,但我希望对基本概念有一个大致的了解。
异步编程到底是什么?它是否使用支持异步IO的语言和操作系统进行编程?或者它是更一般的东西?换句话说,异步IO是不是一个独立于异步编程的概念?
发布于 2016-05-31 11:43:39
异步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)拿回文件时,它将调用您的回调(这里是一个接受单个参数文件的函数)。
异步编写代码有很多困难:
如果使用callbacks.
如果使用同步代码,则内存收集并不总是像内存开销那样高,如果与同步代码混合,则很难调试。
所有这些都是异步编程的艺术。
https://stackoverflow.com/questions/37536061
复制相似问题