【问题标题】:MVar fairness guarantees?MVar 公平性保证?
【发布时间】:2021-02-26 15:49:44
【问题描述】:

我正在使用MVar 构建一个线程安全的共享状态,并且由于要求,我需要一些公平性保证(如果两个线程一个接一个地询问MVar 下的状态,那么一旦状态可用线程将按照他们要求的顺序接受它)。

我在MVar documentation 中没有找到任何注释。

那么在保证公平的情况下,是否需要构建某种ReentrantLock(true) 公平锁的包装器?

【问题讨论】:

    标签: scala concurrency functional-programming scala-cats


    【解决方案1】:

    我不知道确切的保证是什么,但在猫效应中,公平性经常被提到调度器。这意味着您可能无法获得您在第一次购买MVar 时提到的确切订单,但没有人应该挨饿,因为在轮到您之后,您会产生光纤并且必须重新安排才能获得@987654322再次@。

    换句话说,如果您需要精确的排序或精确的循环,您将不得不自己实现,但如果您的要求真的是“每条符合条件的光纤在不饿死的情况下获得大致相同的运行时间"那么您几乎可以免费获得它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 2020-12-22
      • 2019-05-26
      • 2020-05-15
      • 2021-08-27
      • 2018-08-11
      • 2014-06-24
      相关资源
      最近更新 更多