随着单核计算能力的不断的被挖掘,单核计算性能提升的潜力在不断的减少。为了进一步提升PC的计算能力,使用多核的CPU不失为一种明智的选择。 多核CPU不再通过提升指令级指令的并行计算来获得性能的提升,而是通过多个核(实质上就是多个微型的CPU)的并行计算来提高CPU的性能。这种CPU能支持物理层的并行计算。这使得并行计算成为了计算机发展新时期的重要的研究方向。 以前的程序设计绝大多数都是串行的,也就是指令流的执行在同一时间周期内,只能执行一条指令。然而这是否意味着串行化的程序设计不支持并行计算呢?答案是否定的。很简单的,只要你有一个N核的CPU,你就可以通过线程的创建来实现并行计算(最适合创建的线程数与核的数目相等------现阶级主要是双核的,所以你要充分使用计算机的计算能力,创建双线程进行并行计算,是最为合理的)。 -----原理:操作系统将这些相互独立的线程分配给不同的处理机(CPU单核)进行并行处理。 ------这些结论当然不是我夸夸其谈的啦,我是做过相当测试的。测试的代码很简单,创建一个WIN32程序.在里面设置如下:当选择不同的菜单选项时,可以分别选择创建不同数目的线程进行不间断计算(死循环)。关键代码可见文未。 实验结果表明: 当N=0时,创建的线程数为0,CPU利用率为系统闲置时的利用率,10%左右。 当N=1时,创建的线程数为1,CPU利用率达到 60%左右 当N=2时,创建的线程数为2,CPU利用率达到 100%,此时系统反应相当缓慢了,窗口的拖拉变得相当迟缓。 当N=3,10时,创建的线程数为3,10,CPU利用率依然为100% 。。。。。。。 (这是在配置为VISTA终极版,CPU为AMD 3600+(双核) 内存为2G(跟内存无关的) 下的实验结果 ) 这个实验结果也让我想到了我以前的扫雷程序------使用了多线程,从而解决了因界面绘制时间过长,而造成程序易于崩溃的问题。这就是使用串行化语言(C++)编写的并行化程序啊,感慨中。。 附线程的创建与销毁程序如下: case ID_N0: 线程代码如下: DWORD WINAPI ThreadProc (PVOID pParam) |
如何在普通PC上进行多核编程
最新推荐文章于 2023-12-22 21:49:18 发布