并发/多线程编程中的线程公平性或公平性是什么?
我用谷歌搜索过,有很多关于多线程的信息但不完全是公平的。
有人可以解释一下。一个例子是最受欢迎的。
答案 0 :(得分:7)
公平性基本上类似于不同线程能够推进他们正在做的事情的可能性。 100%公平意味着:所有线索应该以几乎相等的比例推进他们的工作; 0%公平意味着一个单独的线程可能一直在前进,而所有其他线程从未(或几乎从不)取得任何进展。
这在很大程度上取决于您的要求如何公平需要或实现。
示例:zOS操作系统有一个名为 workload manager 的组件。此组件基于策略。它允许你说例如:“无论如何,我希望应用程序X总是获得80%的CPU能力; Y也很重要,Z我不在乎”。这可能意味着:当系统受到密集负载时(因此100%的CPU一直消耗) - X得到80%,Y得到20%,Z得不到任何东西。
将此“进程”视图转到线程:在不公平的设置中,线程可能饿死。含义:某些线程能够前进,但其他线程永远不会获得CPU周期,因此它们永远不会做他们应该做的事情。请注意:线程公平性(必然)与系统负载无关。
有关详细信息,请参阅here。
答案 1 :(得分:0)
可能是衡量每个线程获得执行机会的程度。
循环法是最合理的多线程方法。这是因为每个线程都保证以便有机会执行。
基于优先级的,不太公平,但在某些情况下更受欢迎。较低优先级的线程可能会被推到最底层。