Delphi的并行计算
有如下循环体:
hits:=;
for I:= to NumberOfIterations- do
begin
{perform some calculations dependent on random number generation to determine a value x}
if x> then hits:=hits+;
end;{For Loop}
FailureProbability:=hits/NumberOfIterations;
如果迭代次数非常大,如何用并行方法完成?答案如下:
program loop;
{$APPTYPE CONSOLE}
const
NumberOfIterations = ;
type
TCalcThread = class(TThread)
private
FIdx: Integer;
FHits: Cardinal;
protected
procedure Execute; override;
public
constructor Create(Idx: Integer); reintroduce;
property Hits: Cardinal read FHits;
end;
constructor TCalcThread.Create(Idx: Integer);
begin
FIdx := Idx;
FHits := ;
inherited Create(False);
end;
procedure TCalcThread.Execute;
var
i, x, start, finish: Integer;
begin
start := (NumberOfIterations div ) * FIdx;
finish := start + (NumberOfIterations div ) - ;
for i := start to finish do begin
//do your random calculations here
if x > then
Inc(FHits);
end;
end;
var
thrarr: array[..] of TCalcThread;
hndarr: array[..] of THandle;
i: Integer;
FailureProbability: Extended;
begin
for i := to do begin
thrarr[i] := TCalcThread.Create(i);
hndarr[i] := thrarr[i].Handle;
end;
WaitForMultipleObjects(, @hndarr, True, INFINITE);
FailureProbability := Extended(thrarr[].Hits + thrarr[].Hits + thrarr[].Hits + thrarr[].Hits) / NumberOfIterations;
for i := to do
thrarr[i].Free;
end.
Delphi的并行计算的更多相关文章
- delphi’线程新技术 并行计算
TParallel TInterLocked 并行库中的TTask http://docwiki.embarcadero.com/Libraries/Berlin/en/System.Threadin ...
- Delphi 和 C++Builder 2014年及以后技术路线图
RAD Studio, Delphi 和 C++Builder 2014年及以后技术路线图 By: Embarcadero News 内容源自Embarcadero新闻组,本人水平有限,欢迎各位高人修 ...
- delphi 各版本的特性
delphi 各新版本特性收集 Delphi XE6新增了一些特性并增强了原有的功能,主要有以下几个方面: IDE(整合开发环境) Internet XML(扩展标记语言) Compiler( ...
- delphi 演示数据路径
链接里默认的--------------------------- Error --------------------------- I/O error for file "C:\Prog ...
- 学习笔记:7z在delphi的应用
最近做个发邮件的功能,需要将日志文件通过邮件发送回来用于分析,但是日志文件可能会超级大,测算下来一天可能会有800M的大小.所以压缩是不可避免了,delphi中的默认压缩算法整了半天不太好使,就看了看 ...
- delphi连接sql存储过程
针对返回结果为参数的 一. 先建立自己的存储过程 ALTER PROCEDURE [dbo].[REName] ) AS BEGIN select ROW_NUMBER() over(order by ...
- 并行计算提升32K*32K点(32位浮点数) FFT计算速度(4核八线程E3处理器)
对32K*32K的随机数矩阵进行FFT变换,数的格式是32位浮点数.将产生的数据存放在堆上,对每一行数据进行N=32K的FFT,记录32K次fft的时间. 比较串行for循环和并行for循环的运行时间 ...
- [信安Presentation]一种基于GPU并行计算的MD5密码解密方法
-------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基 ...
- 用Python实现多核心并行计算
平常写的程序,无论是单线程还是多线程,大多只有一个进程,而且只能在一个核心里工作.所以很多应用程序即使正在满载运行,在任务管理器中CPU使用量还是只有50%(双核CPU)或25%(四核CPU) 如果能 ...
随机推荐
- GRE词汇3-4 +
page3 accommodate: common commodity accompany: Accomplice: com—共同 plic—重叠 Complicate duplicate repl ...
- SOAPFaultException
javax.xml.ws.soap.SOAPFaultException: String index out of range: -6 at org.apache.cxf.jaxws.JaxWsCli ...
- Azure Blob Storage从入门到精通
今天推荐的是一个系列文章,让读者阅读完成后可以对Azure Blob Storage的开发有一个全面的了解,可谓是从入门到精通. Azure在最初的版本里面就提供了非结构化数据的存储服务,也即Blob ...
- JSON详解(转)
JSON详解 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格 ...
- 关于flume中的几个疑惑
文章发自http://www.cnblogs.com/hark0623/p/4205756.html 转载请注明 flume越用越有一些疑惑,这个月中按计划是要阅读flume源码的,我希望能解决我的 ...
- 寒假 D3 D Modular Inverse
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB ...
- 使用C#导出MSSQL表数据Insert语句,支持所有MSSQL列属性
在正文开始之前,我们先看一下MSSQL的两张系统表sys.objects . syscolumnsMSDN中 sys.objects表的定义:在数据库中创建的每个用户定义的架构作用域内的对象在该表中均 ...
- Play on Words[HDU1116]
Play on Words Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- APIO2015
还没有写完APIO2015的题目,打算今天写一写. T1: 按位DP,DP时要保证已确定的位为0. 前4组设f[n][k]表示把前n个分成k组是否合法. 最后一组设g[n]表示把前n个最少分为多少组才 ...
- mysql5.6安装
mysql5.6安装 #卸载原有的mysqlyum remove mysql*ls /etc/my.cnf*mv /etc/my.cnf* /tmp/ #安装依赖包yum install make c ...