|
//////////////////////////////////////////////////////////////////////////////
比如有一段程序如下:
语句1: int test1 = 0;
语句2: int test2 = 0;
语句3: test1 = test1 + 10;
语句4: test2 = test2 + 20;
语句5: int test3 = 0;
语句6: test3 = test1 + test2;
在核心1运行的语句1,3,同时可以在核心2运行的语句2,4,最后在核心1运行语句5,6
总体消耗的时间应该是4个cpu时间,比单线程运行节约了2个cpu时间。
我觉得Intel和Amd能够将任何单线程的程序,当做多线程程序来处理。欢迎各位探讨。
/////////////////////////////////////////////////////////////////////////////
写出上述的假设是因为楼主对计算机和程序的基本原理不清楚。除非在编程的时候显式用开了两个线程,分别在每个线程中运行那两组计算,否则单线程的程序绝不会把指令打乱到多个处理器上执行。乱序执行也是指在同一cpu上不严格按指令序列执行。系统的调度是以线程(进程)为单位的。就算是开了两个线程,也不一定会分摊到两个处理器上分别执行。这样看系统的负荷状况。因为除了你在运行的用户线程,系统自身还有进程需要运行。因为出自同一进程的两个线程数据亲和力高,所以一般系统倾向于在同一个core上执行。 |
|