作为multi-threading
的初学者,我对这些术语感到有些挣扎。有人能帮我在他们之间划个边界吗?我害怕在开始的时候不会学到一些错误,而且我没有人可以“测试”我。
如果我错了,请纠正我:)
如果两个线程在1 CPU核心上运行,它们将是context-switched
。Context-switching
基于time-slice algorithm
,这可以帮助Scheduler
“决定”使用核心的时间和时间。这两个线程是否与这些术语共享相同的变量并不重要,对吗?
但还有thread interference
。此术语仅在两个线程共享相同的变量时才会使用。
我是否接近于说正确的话?
发布于 2020-09-16 12:09:02
简单地说,"context“是需要加载到程序计数器寄存器、堆栈指针寄存器和CPU的其他寄存器中的值的集合,以便使其启动或继续执行线程。
"Scheduler“是操作系统中决定哪个线程在哪个CPU上运行以及何时运行的部分。
当调度程序保存一个线程的上下文,并在同一个CPU上安装其他线程的上下文并让它运行时,我们称之为“上下文切换”。
“抢占”是我们所称的,当操作系统出于某种原因切换某个线程时,这并不是对线程刚才所做的事情的反应。
“时间切片”是调度程序在调度程序抢占每个新启动的线程之前将其分配给每个新启动线程的时间段,以便让其他等待线程运行。
最后,(我猜)当你读到“干扰”时,它可能是指一个线程所做的任何事情,因为程序中的一些缺陷,干扰了其他线程的功能。(例如,在另一个线程依赖于变量不改变时,通过更改某个共享变量的值。)
https://stackoverflow.com/questions/63912452
复制相似问题