一个进程中的多个线程与一个进程的一个进程共享相同的执行时间吗?

时间:2015-01-18 06:51:26

标签: multithreading operating-system context-switch

例如,让我们假设在我的操作系统中,在100μ执行时间之后发生到另一个进程的上下文切换。此外,我的计算机只有一个处理器,可以执行一个执行线程。

如果我有只包含一个执行线程的进程A和有四个执行线程的进程B,这意味着进程A中的线程将运行100μ,进程B也将运行100μ但分开执行上下文切换前每个线程之间的时间?

流程A :运行100μ

  • 进程中的线程1执行时间:100μ

流程B :运行100μ

  • 进程中的线程1执行时间:~25μ

  • 进程中的线程2执行时间:~25μ

  • 进程中的线程3执行时间:~25μ

  • 进程中的线程4执行时间:~25μ

以上是否正确?

此外,如果我有一个四核处理器,这会有所不同吗?如果我有一个四核处理器,这可能意味着每个线程可以在所有处理器上运行100μ?

2 个答案:

答案 0 :(得分:1)

这一切都取决于你在每个线程的进程/处理过程中做了什么。如果您尝试运行的进程可以从拆分线程中受益,例如,调用Web服务进行处理(因为Web服务可以同时接受多个调用并单独执行),那么不...单个线程比4个线程需要更长的处理时间,因为它是线性执行调用而不是同时执行。

另一方面,如果您正在执行一个不会从线程拆分中受益的进程/代码,那么完成所有4个处理线程的时间在单个核心上将是相同的。

但是,在大多数情况下,将处理拆分为线程所花费的时间比在单个线程上执行它所花费的时间要短,如果你做得对。

在这种情况下,Cores的问题并不重要,除非您尝试运行的线程多于一个核心可以处理的线程数。在这种情况下,操作系统将在单独的核心上运行额外的线程。

这个链接解释了核心和超线程的情况...... http://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/

答案 1 :(得分:0)

无论进程所有权如何,线程切换始终处于相同的时间间隔。所以如果它是100微米那么它总是100微米。除非线程本身放弃执行。当这个线程再次运行时,事情变得复杂了