多线程编程中什么是公平性?

2024-04-05

什么是线程公平性或并发/多线程编程中的公平性?

我用谷歌搜索过,有很多关于多线程的信息,但不完全是关于公平性的。

有人可以解释一下吗。非常欢迎举一个例子。


公平性基本上类似于不同线程能够advance无论他们在做什么。 100% 公平意味着:所有线程应该以几乎相等的比例推进其工作; 0% 公平性意味着一个线程可能一直在前进,而所有其他线程从不(或几乎从不)取得任何进展。

这很大程度上取决于您的要求fairness是需要或达到的。

示例:zOS 操作系统有一个名为工作负载管理器 https://www.ibm.com/support/knowledgecenter/en/ssw_aix_61/com.ibm.aix.osdevice/wlm.htm。该组件有效policy基于。例如,它允许您说:“无论如何,我希望应用程序 X 始终获得 80% 的 CPU 功率;Y 也很重要,Z 我不在乎”。这可能意味着:当系统处于密集负载状态时(因此一直消耗 100% 的 CPU) - X 获得 80%,Y 获得 20%,而 Z 什么也得不到。

将这个“进程”视图分解为线程:unfair设置,线程可能是starving。含义:某些线程能够前进,但其他线程永远不会获得 CPU 周期,因此它们可以never做他们应该做的事。请注意:线程公平性并不(必然)与系统负载相关。

See here http://tutorials.jenkov.com/java-concurrency/starvation-and-fairness.html供进一步阅读。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多线程编程中什么是公平性? 的相关文章

随机推荐