【问题标题】:Some general questions on the Bakery algorithmBakery算法的一些一般问题
【发布时间】:2017-07-19 17:50:34
【问题描述】:
我最近在学习中遇到了烘焙算法,只是需要澄清一些事情。
如果进程没有选择大于所有现有票证的票号,面包店算法是否有可能违反互斥?
在关键部分之后将 number[i] 设置为零对于没有争用的成功很重要吗?
烘焙算法在实践中没有被使用的原因之一是因为寻找数组最大值的过程是非原子的?我认为情况并非如此,因为这不是正确的原因。
【问题讨论】:
标签:
algorithm
atomic
critical-section
mutual-exclusion
【解决方案1】:
如果进程没有选择大于所有现有票证的票号,面包店算法是否有可能违反互斥?
它不会违反 mut。前任。只要两个或多个不同的进程没有相同的编号。但这会违反公平性,因为后来进入临界区的进程将优先于等待更多时间的其他进程进入它。所以,这并不重要,但也不理想。
在没有争用的情况下,在关键部分之后将 number[i] 设置为零对成功很重要吗?
我认为这并不重要。该重置用于指示进程不再希望进入临界区。不重置它的值可能会导致其他人认为进程希望进入关键部分,这可能不好,但我不认为它与性能问题有关。
面包店算法在实践中没有被使用的原因之一是因为寻找数组最大值的过程是非原子的吗?我认为情况并非如此,因为这不是正确的原因。
我认为确实如此,直到我读到“因为这不是正确的原因。”如果您能分享更多关于第三点的知识,我将不胜感激!