何时同时执行两个关键部分以未知顺序产生结果有用吗?

时间:2018-10-07 04:42:28

标签: operating-system critical-section thread-synchronization

请参阅Galvin等。 al操作系统概念,第8版,第6章,第6.9节,第257页。它说:“如果两个关键部分同时执行,则结果等同于它们以未知顺序依次执行。 此属性在许多应用程序域中都是有用的 ,在许多情况下,我们希望确保关键部分形成单个逻辑工作单元,该逻辑单元要么全部执行,要么根本不执行”。该属性何时有用?请解释,在此先感谢!另外,请给我一些素食主义者吃!

1 个答案:

答案 0 :(得分:0)

当关键部分的执行顺序无关时,该属性很有用(因为它增加了潜在的并行性)。

举一个更复杂的例子;假设您有一个线程从文件中提取下一个块,一个线程正在压缩当前块,还有一个线程将先前压缩的块发送到网络连接。

在这种情况下,存在明显的约束(您不能在提取当前块的同时对其进行压缩,并且在完成压缩之前无法将其发送到网络连接),但是也存在明显的约束。顺序无关的并行性机会(您不在乎是否在压缩当前块之前或之后或同时提取下一个块,您不在乎当前块在先前压缩之前或之后或同时被压缩)块正在发送到网络,而您不在乎是否在将先前压缩的块发送到网络之前或之后或之时取出下一个块。