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)中。

Begin
For k=m-1 to 0 do
For j=2 to 2n-1 par do
A(j)=max(A(2j),A(2j+1))
End For
End For
End

显然,算法的时间t(n)=O(lgn),总比较次数为O(n),而最大的处理器数p(n)=n/2。(也即最大的线程数。)

首先,我们建立一个基于对话框的应用程序,然后放置如图所示控件:


然后定义全局变量如下,array用于存放产生的随机数。

int g_nCount=0,j=0;

int *array;

时间: 2024-12-31 19:40:47

Visual C++利用多线程模拟并行计算的相关文章

利用curl 多线程 模拟 并发的详解_php技巧

首先,先了解下 php中的curl多线程函数: 复制代码 代码如下: # curl_multi_add_handle# curl_multi_close# curl_multi_exec# curl_multi_getcontent# curl_multi_info_read# curl_multi_init# curl_multi_remove_handle# curl_multi_select 一般来说,想到要用这些函数时,目的显然应该是要同时请求多个url,而不是一个一个依次请求,否则不如

浅谈.NET下的多线程和并行计算(一)前言

作为一个ASP.NET开发人员,在之前的开发经历中接触多线程编程的机会并不是很多,但是随着.NET 4.0的发布临近,我越来越感受到未来的1-2年中并行计算将会有很大的应用.于是决定通过写日志的方式 来总结一下.NET 3.5下的多线程编程进而引入.NET 4.0提供的新的并行库以及新的并行编程模式和编程的 思维方式. 个人觉得在日常的编程中对于ASP.NET程序员来说使用多线程编程不是很多,其实我们无时无刻不在享 受多线程的优势.首先,WEB服务器环境就是一个多线程环境,每一个请求都是独立的线

VC中利用多线程技术实现线程之间的通信

文章来源:[url]http://www.programfan.com/article/showarticle.asp?id=2951[/url] 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.

ajax-php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助!

问题描述 php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助! 我在抓取一个页面的信息(假设a.php),这个页面只是一些基本的html框架,其他关键信息是通过ajax请求(b.php)回来的,返回的是json,然后在通过页面js将json解析,绘制到页面上.问题的关键是ajax请求的信息里有个手机号码需要登录后才显示完整,原网站利用ajax请求b.php获得json数据,如果直接访问b.php也是可以直接得到:{"name":"zhangsan&

httpclient-java 利用 httpClient 模拟登陆网站时,网站重定向,我该怎么进入后继的网页啊!

问题描述 java 利用 httpClient 模拟登陆网站时,网站重定向,我该怎么进入后继的网页啊! 我用的是httpclient4.3.6 .我模拟登陆我们学校的网站,获取了cookies,但是我用httpwatch看 有重定向的问题,我不知道怎么进入后面的网页!求解!我贴上代码,求代码详解,谢谢!!!小弟初学java 现需要做这个操作,很是艰难呀!感激不尽! 解决方案 public class Test { public static void main(String[] args) th

怎么利用多线程LRU刷新突破MySQL瓶颈?

In this blog post, we'll discuss how to use multi-threaded LRU flushing to prevent bottlenecks in MySQL. 在这篇文章中,我们会讨论怎么利用多线程LRU刷新突破MySQL的瓶颈. In the previous post, we saw that InnoDB 5.7 performs a lot of single-page LRU flushes, which in turn are ser

vs2010中怎么利用多线程同时运行两个c++程序?

问题描述 vs2010中怎么利用多线程同时运行两个c++程序? 需要用到多线程,小白,求大神带.vs2010中不知道支持多线程吗? 解决方案 两个程序同时运行,这个叫多进程.分别编译了,用createprocess或者shellexecute函数调用.多线程因为共享全局变量,不是简单把两个程序源代码放在一起就行的.

windows-C#利用directinput模拟joystick数据

问题描述 C#利用directinput模拟joystick数据 打算写个小程序,利用手机加速度感应器获得手机与实际世界坐标的角度来模拟赛车游戏(比如nfs)的方向盘手柄,手机端做好了,电脑网络传输接收端也做好了,但是找不到好办法来模拟手柄的输入,网上好像说可以用Windows的directinput来模拟,但是找到的资料全都是接收手柄信息作处理的(与我这个程序的目的可以说正好相反),找了好几天资料都没找到比较好的解决办法,所以来csdn请教各位大大了. (其实c/c++,java,c#我都能写

利用SendInput模拟鼠标键盘 <转>

SendInputSendInput可以将指定的鼠标键盘消息插入到系统消息队列,从而实现对鼠标键盘的模拟.有很多程序对SendInput进行了屏蔽,但不是所有的.所以这里介绍一下SendInput的使用.我已经将主要的模拟功能写在了一个单元文件中:SIMouseKeyboard.pas,调用该单元文件中的相关函数就可以实现鼠标键盘的模拟.该单元文件的下载见本楼末尾.SendInput的参数其实很简单,在Windows.pas就有函数的声明如下:function SendInput(cInputs