采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
asyincio异步执行阻塞io需要利用多线程,那为什么不直接用多线程或者线程池呢?结合使用不是多此一举吗?
你这里已经说了是执行阻塞io才利用多线程, 还有一些非阻塞io呢?使用阻塞io的目的是因为没有办法某些库还不支持异步io,最理想的情况是都支持异步io,而且以后的方向也是大量的库都会开始支持异步io的
之前使用kotlin的协程时,直接就能支持阻塞io,刚刚找了一篇文章https://blog.csdn.net/weixin_38858037/article/details/94774676 ,里面提到kotlin的协程遇到阻塞io时会自动启用新的线程,那我可不可以武断地下结论,不管什么编程语言,协程是在单个线程中运行的,协程的阻塞会引起线程的阻塞,所以协程本身并不支持阻塞io?
是的, python的协程就是这个机制,所以基于这个考虑,基本上所有的协程库,比如twisted和asyncio在一开始启动服务器的时候都会同时启动一个线程池,同时开发一些接口允许将同步的io接口提交到线程池中运行,另一些新的语言比如go,因为出现的比较晚,一开始就把自己的内部底层的io库就实现成了可以异步io的模式
登录后可查看更多问答,登录/注册
socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO
1.2k 31
1.1k 24
1.1k 16
1.5k 10
1.1k 9