首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解异步IO: vs异步编程

了解异步IO: vs异步编程
EN

Stack Overflow用户
提问于 2016-05-31 10:45:37
回答 1查看 434关注 0票数 0

我很难理解异步IO,所以我希望澄清我的一些误解,因为“异步”这个词似乎被抛出了很多地方。如果这很重要,我的目标是深入了解扭曲的python,但我希望对基本概念有一个大致的了解。

异步编程到底是什么?它是否使用支持异步IO的语言和操作系统进行编程?或者它是更一般的东西?换句话说,异步IO是不是一个独立于异步编程的概念?

EN

回答 1

Stack Overflow用户

发布于 2016-05-31 11:43:39

异步IO意味着当您的计算机等待某些东西时,应用程序不会被阻塞。在这里等待的定义不是处理。在等网络服务器吗?正在等待网络连接?等待硬盘对盘片上的数据进行响应?所有这些都是IO。

通常,您会以一种非常简单的方式同步编写以下代码:

代码语言:javascript
复制
let file = fs.readFileSync('file');
console.log(`got file ${file}`);

这将阻塞,并且在readFileSync返回您所请求的内容之前不会发生任何事情。或者,您可以异步执行此操作,这样不会阻塞。这是完全不同的编译方式。在幕后,它可能在使用中断。它可能是使用select语句轮询句柄。它通常使用不同的绑定到低级库,比如libc。这就是你需要知道的全部。那会让你的脚湿透的。这是它在我们看来的样子,

代码语言:javascript
复制
fs.readFile(
  'file',
  function (file) {console.log(`got file ${file}`)}
);

在这里,你提供了一个“回调”。该函数将立即请求文件,当它(您调用的函数,这里是fs.readFile)拿回文件时,它将调用您的回调(这里是一个接受单个参数文件的函数)。

异步编写代码有很多困难:

如果使用callbacks.

  • Errors可能更难,那么
  • 会创建金字塔代码。

如果使用同步代码,则内存收集并不总是像内存开销那样高,如果与同步代码混合,则很难调试。

所有这些都是异步编程的艺术。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37536061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档