前几天去面试,有一个面试官问了我一个问题,在都是io型的任务前提下, 什么情况下只能使用多线程, 而不能使用协程. 以往确实没有考虑过这个问题,网上似乎也全都没有这方面的讨论. 有那个大牛知道的么? 能否告知一下,多谢了!
"什么情况下只能使用多线程, 而不适合使用协程"
感觉这句话有点问题,“不适合”不等于“不能“,改成这样比较通顺:"什么情况下只能使用多线程, 而不能使用协程"或”什么情况下适合使用多线程, 而不适合使用协程”。
多线程调用的是操作系统提供的多线程接口,协程其实是在一个线程里执行的,只是可以中断。我个人感觉是如果真的要同时并行做i/o操作,还是多线程好些。如果是一些简单的异步操作,用协程。(没写过多少python代码,仅供参考)
很多服务,处理i/o类型的任务也都是采用类似协程这样的方式去进行处理, redis就是单线程的. 协程也是解决c10k问题的一个很好的方向, 所以这里应该不是简单的异步操作才适合使用协程
@lowmanisbusy: 那应该是什么情况下?你打听到了吗
不解, 不管他了