【问题标题】:Trade-offs of programming with such frameworks as reactivex, kotlin-coroutines, akka-actors?使用 reactx、kotlin-coroutines、akka-actors 等框架进行编程的权衡?
【发布时间】:2020-10-28 17:00:14
【问题描述】:

所有这些框架都在线程之上创建了另一个抽象级别。例如,由于调度,使用 kotlin-coroutines 似乎需要比纯线程更多的 CPU 周期。对于反应式我们有同样的情况,额外的水平 - 更多的 CPU 周期。虽然我不知道 akka-actors。

即使有更多的 CPU 周期来调度协程,我们仍然可以通过非阻塞方法获得性能提升。

谁能详细解释这些收益(或者是一种权衡?),重点是硬件和操作系统级别?也许在什么情况下我们会想要使用协程或响应式,而我们因为某些原因不想使用它们?

【问题讨论】:

  • Java Memory Model 复杂且不直观。直接弄乱它很容易出错。框架可以让你避免它

标签: multithreading jvm akka kotlin-coroutines reactive


【解决方案1】:

线程、协程、actor 等都是围绕并发操作的抽象。这里的主要权衡是这些并发操作的数量和它们处于活动状态的持续时间。

当您有一些并发操作(因为每个线程都很昂贵)并且所有操作都执行大量 CPU 密集型工作(因为在线程之间切换非常昂贵)时,操作系统级别的线程工作得非常好。

在操作系统级线程之上创建的各种用户级抽象在您有大量并发操作和/或它们从开始到结束或从一个恢复点到下一个暂停,因为这些抽象是轻量级的,而且它们的启动、停止和切换也非常便宜。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2020-01-14
    相关资源
    最近更新 更多