我正在尝试找到一种情况,即将多线程更改为协程能够加速所影响的代码部分的处理。尽管我发现协程相比线程使用更少的CPU和Heap空间,但我仍然找不到协程比线程更快的情况。虽然我知道协程的创建和上下文切换比线程的相应操作要便宜得多,但是我在速度差异方面得到了微不足道的结果(如果不测量线程创建,两种情况将完全相同)。
那么,有没有可能找到一种情况,使得协程比线程执行更快呢?
那么,有没有可能找到一种情况,使得协程比线程执行更快呢?
需要注意的一点是,当你有大量的协程时,协程的优势是显而易见的。你可以创建和执行成千上万个协程而毫不费力,如果你试图通过线程来实现这一点,线程带来的所有开销可能会迅速消耗机器资源。因此,使用协程使你能够考虑大规模并行化,而无需管理工作线程和运行任务。它们还使得实现异步计算模式变得容易,这在基本线程中非常难以实现,比如通道和执行者。
关于你的问题超出范围,但仍值得注意的是这个概念的泛化性,因为协程的用例不仅限于异步计算。协程的核心是可挂起函数,例如它也可以像Python一样启用生成器,这与异步编程的联系不太直接。