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) 如果能 ...
随机推荐
- https_request
<?php $access_token = ); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_se ...
- Android种 adb是什么(转)
提到adb.exe,一直关注我们Android系列教程的朋友们应该不会感到陌生,因为无论取得 Root权限或者刷机的时候我们都通过adb直接操作管理Android手机,但是可能大多数对于adb仅仅局限 ...
- 输入文本框,当点击enter时,做进一步处理!
//登录用户文本框敲回车键 private void txtCode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.En ...
- nginx查看post请求日志
在http段加上 log_format access '$remote_addr - $remote_user [$time_local] "$request" $status $ ...
- C# 通用上传文件类
1.Upfile.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="U ...
- BZOJ1834 [ZJOI2010]network 网络扩容(最小费用最大流)
挺直白的构图..最小费用最大流的定义. #include<cstdio> #include<cstring> #include<queue> #include< ...
- 详解Adorner Layer(zz)
首先,千万不要觉得Adorner离你很远,因为最简单的WPF界面也会用到Adorner.在WPF中,下面的几个很常见的功能,都是用Adorner实现的. 1. 光标(caret) 2. ...
- BZOJ3640 : JC的小苹果
设$f[i][j]$表示$hp$为$i$,在$j$点的概率,$d[i]$表示$i$的度数,$w[i]$表示经过$i$点要扣掉的血量. 对于$j$到$k$这条边,$f[i-w[k]][k]+=\frac ...
- BZOJ3067 : Hyperdrome
设f[i][j]表示前i个字母中字母j出现的次数对2取模的结果. 若[l,r]经过重组可以形成回文串,则需满足f[l-1][j]与f[r][j]至多有1位不同. 将f[i]用一个long long表示 ...
- C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)
C语言根据日期判断星期几(使用基姆拉尔森计算公式) 算法如下: 基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数, ...