一个进程中的多个线程是否与一个进程具有一个线程共享相同的执行时间?
Do multiple threads in one process share the same execution time as one process with one thread?
例如,假设在我的操作系统中,在 100μ 的执行时间后发生了到另一个进程的上下文切换。此外,我的计算机只有一个处理器和一个执行线程。
如果我有只包含一个执行线程的进程 A 和有四个执行线程的进程 B,这是否意味着进程 A 中的线程将 运行 100μ 并且进程 B 也将 运行 对于 100μ 但在上下文切换之前在每个线程之间拆分执行时间?
进程 A:运行 100μ
- 进程A中的线程1执行时间:100μ
进程 B:运行 100μ
进程A中的线程1执行时间:~25μ
进程A中的线程2执行时间:~25μ
进程A中的线程3执行时间:~25μ
- 进程A中的线程4执行时间:~25μ
以上是否正确?
此外,如果我有四核处理器,情况会有所不同吗?如果我有一个四核处理器,这是否意味着每个线程可以 运行 在所有处理器上每个线程 100μ?
这完全取决于您在每个线程中的进程/处理中所做的事情。如果您尝试 运行 的进程可以从线程拆分中获益,例如调用 Web 服务进行处理(因为 Web 服务可以一次接受多个调用并分别执行),那么不会...单线程比 4 线程处理时间更长,因为它是线性执行调用而不是同时执行。
另一方面,如果您正在执行无法从线程拆分中获益的进程/代码,那么在单个内核上完成所有 4 个处理线程的时间将相同。
但是,在大多数情况下,如果处理得当,将处理拆分为多个线程所花的时间应该比在单个线程上执行它花费的时间更少。
核心的问题在这种情况下不考虑,除非您试图 运行 多于一个核心可以处理的线程。在这种情况下,OS 将 运行 单独核心上的额外线程。
这个 link 解释了核心和超线程的更多情况...
http://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/
无论进程所有权如何,线程切换始终处于相同的时间间隔。所以如果它是 100micro,那么它总是 100micro。当然除非线程本身放弃执行。当此线程再次进入 运行 时,事情就变得复杂了
例如,假设在我的操作系统中,在 100μ 的执行时间后发生了到另一个进程的上下文切换。此外,我的计算机只有一个处理器和一个执行线程。
如果我有只包含一个执行线程的进程 A 和有四个执行线程的进程 B,这是否意味着进程 A 中的线程将 运行 100μ 并且进程 B 也将 运行 对于 100μ 但在上下文切换之前在每个线程之间拆分执行时间?
进程 A:运行 100μ
- 进程A中的线程1执行时间:100μ
进程 B:运行 100μ
进程A中的线程1执行时间:~25μ
进程A中的线程2执行时间:~25μ
进程A中的线程3执行时间:~25μ
- 进程A中的线程4执行时间:~25μ
以上是否正确?
此外,如果我有四核处理器,情况会有所不同吗?如果我有一个四核处理器,这是否意味着每个线程可以 运行 在所有处理器上每个线程 100μ?
这完全取决于您在每个线程中的进程/处理中所做的事情。如果您尝试 运行 的进程可以从线程拆分中获益,例如调用 Web 服务进行处理(因为 Web 服务可以一次接受多个调用并分别执行),那么不会...单线程比 4 线程处理时间更长,因为它是线性执行调用而不是同时执行。
另一方面,如果您正在执行无法从线程拆分中获益的进程/代码,那么在单个内核上完成所有 4 个处理线程的时间将相同。
但是,在大多数情况下,如果处理得当,将处理拆分为多个线程所花的时间应该比在单个线程上执行它花费的时间更少。
核心的问题在这种情况下不考虑,除非您试图 运行 多于一个核心可以处理的线程。在这种情况下,OS 将 运行 单独核心上的额外线程。
这个 link 解释了核心和超线程的更多情况... http://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/
无论进程所有权如何,线程切换始终处于相同的时间间隔。所以如果它是 100micro,那么它总是 100micro。当然除非线程本身放弃执行。当此线程再次进入 运行 时,事情就变得复杂了