【问题标题】:Difference between Time-Slice, Context-Switch and Thread interference时间片、上下文切换和线程干扰之间的区别
【发布时间】:2020-09-16 02:56:07
【问题描述】:

作为multi-threading 的初学者,我对这些术语 感到有些困惑。有人可以帮我在他们之间划一个边界吗?我怕一开始就学错了,也没有人来“考验”我。

如果我错了,请纠正我:)

如果两个线程同时在1 个 CPU 内核上运行,它们将是 context-switchedContext-switching 基于time-slice algorithm,这有助于Scheduler“决定”在核心上保留哪一个以及多长时间。这 2 个 threads 是否与这些术语共享相同的 variable 并不重要,对吧?

但是还有thread interference。只有当两个线程共享相同的变量时,这个term才基于?

我说得对吗?

【问题讨论】:

标签: java multithreading context-switch


【解决方案1】:

“上下文”,简而言之,是需要加载到程序计数器寄存器、堆栈指针寄存器和 CPU 的其他寄存器中以使其启动或恢复线程执行的值的集合.

“调度程序”是操作系统的一部分,它决定哪些线程应该在哪些 CPU 上以及何时运行。

“上下文切换”就是调度器保存一个线程的上下文,并将其他线程的上下文安装在同一个 CPU 上,并让它运行时我们所说的。

当操作系统出于某种原因而不是对线程刚刚所做的事情的反应时,我们称之为“抢占”。

“时间片”是调度程序授予每个新(重新)启动的线程的时间段,然后调度程序将抢占它以让其他等待线程运行。

最后,(我猜)当您阅读“干扰”时,它可能指的是一个线程所做的任何事情,由于程序中的某些缺陷,干扰其他一些线程。 (例如,通过更改某些共享变量的值,而此时另一个线程依赖于该变量不会改变。)

【讨论】:

  • 谢谢所罗门。清除了我所有的疑虑!
猜你喜欢
  • 2013-05-28
  • 1970-01-01
  • 2017-09-09
  • 2016-07-04
  • 2017-05-29
  • 2019-12-16
  • 1970-01-01
  • 2020-12-09
  • 2010-12-28
相关资源
最近更新 更多