代码之家  ›  专栏  ›  技术社区  ›  Some Name

MVar公平性保证?

  •  0
  • Some Name  · 技术社区  · 4 年前

    我正在构建一个线程安全的共享状态 MVar 由于需求,我需要一些公平性保证(如果两个线程在 MVar 一个接一个,然后一旦状态可用,线程将按照它们要求的顺序处理它)。

    我在里面找不到任何便条 MVar documentation .

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

    0 回复  |  直到 4 年前
        1
  •  2
  •   Karl Bielefeldt    4 年前

    我不知道确切的保证是什么,但在猫效应中,公平经常被提到 调度程序 。这意味着您可能无法获得您在首次收购时提到的确切订单 MVar ,但任何人都不应该挨饿,因为轮到你后,你会放弃纤维,在获得纤维之前必须重新安排时间 MVar 再一次。

    换句话说,如果你需要精确的排序或精确的循环,你必须自己实现,但如果你的要求真的是“每个符合条件的光纤都能获得大致相同的运行时间而不会挨饿”,那么你几乎可以免费获得。