单词::'Thread'和'Core'的关系

Qua*_*fan 2 multithreading core cpu-usage

程序创建/支持的线程数是否与CPU具有的数量或核心有任何关系/约束?这个词thread有没有任何关系Cores of CPU

Sed*_*glu 5

计算机只能并行运行number_of_cores线程.如果系统只有一个核心,则只能同时运行一个线程.通过在非常短的时间内连续运行每个线程来"模拟"多任务处理.

通常,OS会在核心上任意调度线程.例如,线程的一个量子可以在一个核心上运行,同一个线程的下一个量子可以在另一个核心上运行.这就是为什么当你运行单个cpu-heavy线程时你看到两个内核都很忙的原因.这允许单线程进程通过在多个内核之间分配负载来利用多核系统,具体取决于可用性的变化.

更重要的是,操作系统允许线程"锁定"在一个或多个核心上,因此它仅在指定的核心上运行.这在Windows 上称为亲和力掩码.今天的多核感知软件可以利用这一点,并将某些线程专用于某些内核以优化其工作负载.游戏用于将AI专用于一个核心,例如渲染另一个核心.为了有效地执行此操作,软件必须知道系统具有多少个核心,并根据该数量创建和分配线程.

类似地,诸如OpenMP的并行编程框架对核心进行计数以有效地并行化操作.它们创建与系统上的核心数一样多的线程,以获得物理并行性的最佳性能.

我认为这是核心数量和线程数量之间关系的唯一情况.