- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习如何使用delphi并行库而不是TThread。我有许多要同时运行的任务。每个任务最多都是在等待某个事件,而在等待时,我想将执行权传递给其他任务。
这是我的示例代码:
type
TObj = class
pos: integer;
Done: boolean;
Constructor Create;
procedure DoWork(Sender: TObject);
end;
var
Objects : array [0..39] of TObj;
tasks : array of ITask;
constructor TObj.Create;
begin
pos:=0;
DOne:=false;
end;
procedure TObj.DoWork(Sender: TObject);
begin
repeat
inc(pos);
sleep(100);
until Done;
end;
procedure TForm1.StartClick(Sender: TObject);
var
i: integer;
begin
Setlength (tasks ,Length(Objects));
for i:=0 to Length(tasks)-1 do begin
Objects[i]:=TObj.Create;
tasks[i] := TTask.Create(Objects[i],Objects[i].DoWork);
tasks[i].Start;
end;
sleep(5000);
Memo1.Lines.Clear;
for i:=0 to Length(tasks)-1 do begin
Objects[i].Done:=true;
Memo1.Lines.Add(IntToStr(Objects[i].pos));
end;
end;
最佳答案
仅仅因为您启动了N个任务,并不意味着N个任务将同时运行。如果需要,请坚持使用TThread
。
PPL使用内部线程池为TTask
对象提供服务,并且该池根据您已安装的许多CPU和实际运行的任务数量进行自我调节。这在PPL documentation中进行了解释:
The RTL provides the Parallel Programming Library (PPL), giving your applications the ability to have tasks running in parallel taking advantage of working across multiple CPU devices and computers. The PPL includes a number of advanced features for running tasks, joining tasks, waiting on groups of tasks, etc. to process. For all this, there is a thread pool that self tunes itself automatically (based on the load on the CPU’s) so you do not have to care about creating or managing threads for this purpose.
TThreadPool
对象,根据需要设置其
MinWorkerThreads
和
MaxWorkerThreads
属性,然后将该对象传递给具有
TTask
输入参数的
APool
构造函数之一。默认情况下,
MinWorkerThreads
设置为
TThread.ProcessorCount
,并且
MaxWorkerThreads
设置为
TThread.ProcessorCount * 25
。
关于multithreading - Delphi 10 : Correct way to run tasks simultaneously,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45068750/
我正在构建一个基本的 Java 应用程序来将一些文件加载到 mysql 数据库中。我能够毫无问题地加载文件并填充我的表。然而,在与审查我的代码的人交谈后,我显然没有正确关闭我的连接并浪费资源。我在
我正在用 C++ 构建一个库(主要是为了好玩),我已经研究了一段时间(多年,哈哈,这只是一种爱好) 我最近将一些基础(阅读、库依赖)切换到了另一个库。不幸的是,该库根本不关心“const-correc
如果我绘制单个平面,则纹理坐标会正确映射。 (4 Verts, 4 TC, 6 Indices(2 polys)) 即使它被 segmentation ,(9 Verts, 9 TC, 27 Indi
我正在从文件系统上的 pfx 加载 x509 证书 new X509Certificate2(@"Resources\certificate.pfx", "Password123") 在本地,这工作正
我知道这个问题被问了一遍又一遍。我确实喜欢在与此相关的所有问题中提出建议,并且我在 this question that I put 中做了 BalusC 的操作。 告诉我,我还没有成功。 所以网络应
简而言之,我正在制作一个预订应用程序。预订 ID 需要从 10000 开始,并在每次新预订时增加 1。 我已经开始编写生成此预订编号的方法。我正在努力的是: 第一次运行时,不会有预订编号,所以我不能简
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我查看了 php.net 上的 switch 文档,据我所知,它检查了 switch 和 case 中的变量之间的相等性比较。但是,以下代码似乎适用于所有可能的值(int、null、数组、其他): $
我正在为以多种方式创建和作用于实体的服务编写 JUnit 测试。我希望我的测试能够尝试多种不同的事件组合。我有这样的东西: test1() { /** create entity **/ /** as
关于如何在 Delphi 程序中定义 ShortCut 的示例有很多,但是它们归结为两种不同的方式: 将任意 scCtrl、scShift 和 scAlt 常量添加到键的 Ord() 使用 Menus
我正在尝试学习如何在 Javascript 中创建类以及如何执行对象继承。我已经遵循了一些教程,但我不确定我的代码是否正确。 我是否正确创建了公共(public)函数和属性?如果不是,我应该改变什么?
任何写过 javascript/jquery 的人都知道,有很多不同的方法可以做同样的事情。我目前正在尝试通过表单提交和 AJAX 请求向服务器发送一些数据,我想知道执行此操作的“正确”方法是什么。
一条 200 字节的消息有一个随机字节损坏。 修复损坏字节的最有效方法是什么? A Hamming(255,247)代码有 8 个字节的开销,但实现起来很简单。 Reed-Solomon error
在C++中,将n -bit整数移位n是未定义的行为: std::uint64_t v = 1; v = v = 64 ? 0 : v > 6; uint64_t mask = (!!temp)
我对 MouseEvents 和 MouseListeners 非常陌生,最近我问了一个关于创建篮球投篮图表的问题。到目前为止我所拥有的是这个 import javax.swing.*; im
http://www.codechef.com/OCT14/problems/PRLADDU 这是当前的运行比赛。 我不想要它的答案,只是让我知道我的方法是否正确。 我遵循的方法是按交换方式添加人和恐
我正在用 Python(在 Linux 系统上的 Apache 服务器上)编写一个需要连接到 Postgres 数据库的 Web 应用程序。因此,它需要数据库服务器的有效密码。在我的 Python 文
我对 JS 和 HTML5 有点陌生。我正在创建一个简单的测验,只是为了好玩。我知道需要使每个问题都能够独立于其他问题而被标记为“正确”。我如何通过 JS,甚至 CSS/HTML5 来做到这一点?我感
我正在编写一个涉及大量 XML 操作的 HTML5 应用程序,其中部分操作涉及比较两个不同 XML 元素的版本。 我需要的是每个 Element、Attr 和 TextNode(所有这些都继承自 No
我正在使用 IBM RAD 开发一些 JPA 实体,并从中开发相应的 JPA Manager Bean。管理器 bean(由 RAD 生成)具有以下成员: @PersistenceUnit priva
我是一名优秀的程序员,十分优秀!