多核与多线程 问答

请问一下多线程一定多核吗?
对于操作系统和软件来说,多线程并不意味需要多核心的CPU,事实上,2005年以前,所有的个人PC都是单核心的,但是1993年问世的Windows NT就支持多线程。操作系统采用分时的办法让多个线程平分CPU时间。

多线程是不是意味着一定并发执行?‘网上各种概念太多,也太笼统,求助大神们的解答。。。
不一定,操作系统会根据线程的亲缘性、同步和锁来调度线程。比如说两个对存储加锁的线程分别读写存储,那么它们就是交替运行的。这里解释下,并发和并行不是一个概念,并发是指宏观逻辑上的,并行则是指多个CPU同时运行。如前所述,在2006年以前,PC上往往只有一个处理器,所以对于单处理器来说,是不可能并行的。

恩 还有,多核编程在有哪些经典的入门书籍呢?入门的就行
这个分为几个层次,一个是数学、算法层次的《并行计算》一类的书籍,一个是编程语言/API层面的书,比如各种Java书籍。还有一个是操作系统、硬件和计算机体系结构方面的书,比如《操作系统》《计算机体系结构》。掌握多线程编程是一回事,真正写出能充分利用并行计算的算法,并且获得很好的加速比,又是另一回事。一些数学问题,比如十进制求圆周率,已经被数学证明是不可以并行计算,只能串行计算的,但是十六进制的圆周率计算就可以并行。像这样的知识,编程的书籍是不会告诉你的。

如果进行多核编程,有没有什么软件工具或者查看cpu的使用情况呢?我去进行多核编程,想要直观查看一下多核编程与单核在cpu性能上的区别。。。
cpuz的官方网站上有一个工具,可以通过CPU内部的计数器获得CPU使用状况。另外你可以通过比较程序的执行时间来直观获得程序的加速比。注意,Windows任务管理器中的图表是不可靠的,这主要是因为多处理器环境非常复杂,比如说一个同时具有超线程技术的双核处理器,当两个满负荷的线程在两个物理内核中执行的时候,Windows任务管理器报告使用率为50%的时候,可能真实的CPU利用率在80~90%。再比如,对于NUMA节点,Windows任务管理器不能很好地反映处理器内核的亲缘关系。

原文地址:https://www.cnblogs.com/lvdongjie/p/4476478.html