以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- [转帖]Visual C++利用多线程模拟并行计算! (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=7947) |
|||
-- 作者:mydream888 -- 发布时间:2011/9/9 8:37:41 -- [转帖]Visual C++利用多线程模拟并行计算! Visual C++ 多线程 模拟 并行计算 随着信息时代的到来,需要处理的信息量越来越庞大,需要解决的问题越来越复杂,使得计算量剧增。通过提高单个处理器的计算速度和采用传统的"顺序(串行)"计算技术已难以胜任。因此,需要有功能更强大的计算机系统和计算机技术来支撑。并行计算机及并行计算技术应运而生。
但由于缺乏实验环境和机器设备,我们普通人很难研究并行算法,即使有了想法也同样面临着无法验证的尴尬。不过,好在像面向对象语言c++,java等都提供了多线程,使我们可以模拟多台处理机。下面,我就一个简单的例子,向大家介绍一下在vc下如何利用多线程模拟多处理机并行求取最大值问题。 题目如下:令n=2的m次方,A是一个2n维的数组,待求最大值的数存放在A(n),A(n+1),……A(2n-1)中,所求得的最大值置于A(1),于是算法描述如下: 输入:n=2的m次方个数存在数组A(n;2n-1)中; 输出:最大数置于A(1)中。
显然,算法的时间t(n)=O(lgn),总比较次数为O(n),而最大的处理器数p(n)=n/2。(也即最大的线程数。) 首先,我们建立一个基于对话框的应用程序,然后放置如图所示控件:
在对话框的初始化函数中,我们随机产生n个数并存于数组array中,程序代码如下:
运行结果如图: |
|||
-- 作者:回声探路 -- 发布时间:2011/9/10 10:01:02 -- 横向统计表设置文件 太好了 顶起 希望有更多这些 多核多线程的例子
|