C++多线程与CPU多核多线程的关系

  • https://blog.csdn.net/jomie/article/details/24878643
  • https://bbs.csdn.net/topics/270083226
  • https://bbs.csdn.net/topics/391911370?page=1

程序的多线程和CPU的多线程并不直接关联,底层的任务调度、线程调度都是操作系统来实现的。你只能告诉操作系统,这些工作是并行的,还是串行的,至于cpu怎么执行的,由于操作系统的线程调度,最终会把线程分配到每个核心上运行。

就比如说AMD的四核,可能其中只有三个核心是良好的,最后一个核心是弱小的,这时候操作系统就要分配工作量,让弱小的核心工作量尽可能小,以便达到最佳的工作效果。intel的超线程技术,只是为了省电罢了。允许一条流水线上同时并发处理两条指令之类的,但是cpu的性能来看,i3

系统的核心数,和实际线程数的关系是, 核心数越多,可以同时运行的线程数就越多,线程的并发度就越高。事实上,8 核心开十六个线程,差不多就可以让所有核心忙起来了,基本上不空闲了。具体如何,还要看系统调度算法,和程序自己如何实现的。

 

你可能感兴趣的:(C++多线程与CPU多核多线程的关系)