请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

asyincio异步执行阻塞io需要利用多线程?

asyincio异步执行阻塞io需要利用多线程,那为什么不直接用多线程或者线程池呢?结合使用不是多此一举吗?

正在回答

1回答

bobby 2020-01-05 12:31:38

你这里已经说了是执行阻塞io才利用多线程, 还有一些非阻塞io呢?使用阻塞io的目的是因为没有办法某些库还不支持异步io,最理想的情况是都支持异步io,而且以后的方向也是大量的库都会开始支持异步io的

0 回复 有任何疑惑可以回复我~
  • 提问者 Aioria_ #1
    之前使用kotlin的协程时,直接就能支持阻塞io,刚刚找了一篇文章https://blog.csdn.net/weixin_38858037/article/details/94774676 ,里面提到kotlin的协程遇到阻塞io时会自动启用新的线程,那我可不可以武断地下结论,不管什么编程语言,协程是在单个线程中运行的,协程的阻塞会引起线程的阻塞,所以协程本身并不支持阻塞io?
    回复 有任何疑惑可以回复我~ 2020-01-05 13:10:22
  • bobby 回复 提问者 Aioria_ #2
    是的, python的协程就是这个机制,所以基于这个考虑,基本上所有的协程库,比如twisted和asyncio在一开始启动服务器的时候都会同时启动一个线程池,同时开发一些接口允许将同步的io接口提交到线程池中运行,另一些新的语言比如go,因为出现的比较晚,一开始就把自己的内部底层的io库就实现成了可以异步io的模式
    回复 有任何疑惑可以回复我~ 2020-01-06 14:38:38
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信