线程是否以相同的速度运行(与所有其他处理器任务相关)?

时间:2017-05-24 00:56:13

标签: multithreading performance time processor

我想知道一个线程是否与计算机中的所有其他线程运行速度相同?毕竟它们都在同一个处理器上运行,所以如果一个线程"滞后" - 我认为这意味着处理器执行的所有事情都在那个时刻落后了?我认为这是正确的假设吗?或者我错了吗?

1 个答案:

答案 0 :(得分:1)

首先,要考虑几个:概念"线程"存在于您的编程语言中,或者可能存在于某些"框架内#34;你的语言;在操作系统内,甚至在硬件内。

关键是:最后,在真正的硬件中,CPU只是管道,寄存器,...复制的各种元素。含义:每个线程都在自己独特的硬件上运行;并且每个线程的硬件(很可能)是相同的。因此:所有线程都应以相同的速度移动(CPU的时钟速度)。

但当然,还有其他概念可以发挥作用;例如thread priority 。大多数操作系统允许你说:"这个线程比另一个线程更重要"。这意味着更重要的线程可能比其他线程接收更多的CPU周期。但这也取决于CPU当前面临的整体负载

最后:你必须明确术语。线程只不过是某些活动线程的抽象而已。#34;。线程无意义,直到您认为它正在执行某些代码。所以一个线程本身并不是"滞后&#34 ;;但它正在执行的代码可能会导致很多等待(例如在执行IO时)。然后你观察线程"不移动"。但这不是由速度"引起的。该线程运行的是什么,但线程实际上正在做什么!

关于优先级:这在很大程度上取决于操作系统/框架。基本上会有一个组件测量"消费"并做出决定。最简单的模型是线程接收时间片;当然:然后一些经理可以决定如何将可用的时间片分配给等待处理器时间的线程。你可能看起来here(非常古老的材料,但仍然是一个很好的阅读);或there以获取具体的实施示例。