所有这些框架都在线程之上创建了另一层抽象。例如,由于调度的原因,使用kotlin-coroutines似乎比使用纯线程需要更多的CPU周期。对于反应式,我们有相同的情况,额外的级别-更多的CPU周期。不过,我对阿卡演员不太了解。
而且,即使有更多的CPU周期用于调度协程,我们仍然可以因为非阻塞方法而获得性能提升。
有人能解释一下这些收益(或者这是一种权衡吗?)以硬件和操作系统级别为重点的详细信息?也许在什么情况下,我们想使用协程或reactivex,而当我们因为某些原因而不想使用它们?
发布于 2020-10-29 19:52:22
线程、协程、角色等都是围绕并发操作的抽象。这里的主要权衡是这些并发操作的数量和它们处于活动状态的持续时间。
当你有几个并发操作(因为每个线程都很昂贵),并且当所有的操作都要做大量的CPU相关工作时(因为在线程之间切换是非常昂贵的),操作系统级的线程就能很好地工作。
当你有大量的并发操作和/或它们从开始到结束或者从一个恢复点到下一个挂起消耗很少的CPU时,在操作系统级线程之上创建的所有类型的用户级抽象都能很好地工作,因为这些抽象是轻量级的,它们的启动、停止和在它们之间切换也非常便宜。
https://stackoverflow.com/questions/64577768
复制相似问题