0

我将解释上述问题,我有两个线程,每个线程都执行相同的操作,需要 x 毫秒。如果我的电脑只有一个核心,这两个动作需要大约 2 毫秒吗?

4

3 回答 3

2

如果动作是CPU-bound 的,基本上意味着它只包含在计算中,那么由于上下文切换开销,总的wall-time将是一个线程所花费时间的两倍多。

如果操作有一些不可忽略的 IO 相关操作(从内存、磁盘或网络读取),那么单个内核上的两个线程可能会比一个线程所需的时间多一点,但不一定是两倍。如果操作系统能够让一个线程执行 IO,而另一个执行计算,并且交替执行,那么您可能会让两个线程与一个单线程在同一时间运行。

于 2013-11-12T19:56:24.060 回答
0

是的。它们将一个接一个地执行或以某种方式交错执行,但总共需要双倍的时间。

于 2013-11-12T18:49:55.690 回答
0

是的当然。如果您有两个线程和一个 CPU 内核,则线程将一个接一个地运行,或者按时间片运行。但是一个核心不可能一次运行多个执行线程。

除非正在使用超线程。但这会使一个核心看起来像两个(或更多)核心,因此此处不适用。

于 2013-11-12T18:50:07.817 回答