Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“交错”是什么意思;“多线程”;在c中?_C_Multithreading_Thread Safety_Pthreads - Fatal编程技术网

“交错”是什么意思;“多线程”;在c中?

“交错”是什么意思;“多线程”;在c中?,c,multithreading,thread-safety,pthreads,C,Multithreading,Thread Safety,Pthreads,有人能解释什么是交错多线程吗? 还允许使用实时示例。说明: 交叉多线程的目的是删除所有数据 依赖项从执行管道暂停。因为一根线是 相对独立于其他线程,出现一个线程的可能性较小 一个管道阶段中的指令需要较旧版本的输出 管道中的指令。从概念上讲,它类似于先发制人 操作系统中使用的多任务处理;一个类比是 给每个活动线程的时间片是一个CPU周期 解释得很好 基本上,它是关于在CPU上交错来自不同操作系统级线程的指令,以降低指令之间代价高昂的依赖关系的风险。这被英特尔称为超线程。CPU有一个带有2个寄存器集

有人能解释什么是交错多线程吗? 还允许使用实时示例。

说明:

交叉多线程的目的是删除所有数据 依赖项从执行管道暂停。因为一根线是 相对独立于其他线程,出现一个线程的可能性较小 一个管道阶段中的指令需要较旧版本的输出 管道中的指令。从概念上讲,它类似于先发制人 操作系统中使用的多任务处理;一个类比是 给每个活动线程的时间片是一个CPU周期

解释得很好


基本上,它是关于在CPU上交错来自不同操作系统级线程的指令,以降低指令之间代价高昂的依赖关系的风险。

这被英特尔称为超线程。CPU有一个带有2个寄存器集的单核

这些可用于提高堆芯的利用率

这对代码来说是不透明的,因为它的行为类似于2个核心。但是,一次只能运行一个


如果是多线程的,您的代码仍然需要原子、互斥等

答案中没有一个能区分交错多线程和SMT。