首页 > 解决方案 > 两个关键部分的并发执行何时以某种未知顺序产生结果有用?

问题描述

参考 Galvin 等。al Operating System Concepts,第 8 版,第 6 章,第 6.9 节,第 257 页。它说,“如果两个关键部分改为同时执行,则结果等同于它们以某种未知顺序顺序执行。尽管此属性在许多情况下很有用应用程序领域,在许多情况下,我们希望确保一个关键部分形成一个单独的逻辑工作单元,该工作单元要么完整执行,要么根本不执行。” 该属性何时有用?请解释一下,提前谢谢!另外,请给我一些蔬菜吃!

标签: operating-systemcritical-sectionthread-synchronization

解决方案


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

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

在这种情况下,存在明显的限制(您不能在当前块仍在获取时对其进行压缩,并且在压缩完成之前不能将压缩块发送到网络连接),但也有明显的并行机会顺序无关紧要(您不关心下一个块是在当前块被压缩之前还是之后或期间获取的,您不关心当前块是在先前压缩块之前还是之后或同时被压缩发送到网络,并且您不关心下一个块是在先前压缩的块发送到网络之前还是之后或同时获取的)。


推荐阅读