异步IO

Posted highly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步IO相关的知识,希望对你有一定的参考价值。

解决CPU高速执行能力和IO设备龟速严重不匹配的方法:

  • 同步IO:用多线程和多进程。但是线程的数目不能无限增大,否则,CPU的时间就花在线程切换上了。
  • 异步IO:CPU只发出io指令,并不等待io结果。

异步IO:

按照普通顺序写出的代码实际上是没法完成异步IO的。

异步IO模型需要一个消息循环,在消息循环中,主线程不断地重复“读取消息-处理消息”这一过程:

loop = get_event_loop()
while True:
    event = loop.get_event()
    process_event(event)

在“发出IO请求”到收到“IO完成”的这段时间里,同步IO模型下,主线程只能挂起,但异步IO模型下,主线程并没有休息,而是在消息循环中继续处理其他消息。这样,在异步IO模型下,一个线程就可以同时处理多个IO请求,并且没有切换线程的操作。对于大多数IO密集型的应用程序,使用异步IO将大大提升系统的多任务处理能力。

以上是关于异步IO的主要内容,如果未能解决你的问题,请参考以下文章

异步 IO 的整洁代码

Python异步IO

Cypress.io 如何处理异步代码

如何用python实现异步io

非阻塞IO可以等同异步IO嘛?

ES7-Es8 js代码片段