有没有什么地方应该比协程更喜欢线程?

Is there any area where Threads should be favored over Coroutines?

我刚刚讲了 Kotlin 的协程,问题是协程是否总是可以替代线程,或者是否也有缺点。

或者反过来说:有什么地方不应该使用协程吗?

协程对于异步编程很有用。当您编写的代码大部分时间都必须等待某些外部事件时,就像现代连接的 user-interfaces 和 micro-service-oriented 后端应用程序中经常发生的那样,协程和 Kotlin 挂起函数的概念可以让您编写看起来自然且 easy-to-understand 的代码,比具有显式线程的代码更具可扩展性。

如果您正在编写某种计算,CPU-intensive 代码,那么您会发现 multithread-programming 和并行性的经典模式效果更好。

这并不意味着您不能使用协程来并行化 CPU-intensive 应用程序的某些部分,但这样做不会在代码可读性或其性能方面获得任何好处。