|
由于第48楼和第49楼嘲笑楼主,楼主决定公布一个方法,给嘲笑楼主的人,一个有力的反击。
比如有一段程序如下:
语句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能够将任何单线程的程序,都可以用多核同时运行加速处理。欢迎各位探讨。
去看点并行计算的书你就不会举出跟你论点相反的例子了。
在你的例子里,如果核心1在运行到语句6时,核心2因为其他任务的关系,还没完成4的计算的话,那么你就得到一个错误的答案,如果干脆连2都没完成,恭喜你,你的程序非法操作了。
如果要解决这个问题,你的程序里得加上进程或者线程通讯、同步的命令,那么这段程序也就成为了多线程,而不再是你口中的单线程了。 |
|