gpt4 book ai didi

class - Delphi XE 类使用并行 : how to?

转载 作者:行者123 更新时间:2023-12-04 08:28:15 27 4
gpt4 key购买 nike

我需要模拟汽车在平方区域上移动(比方说)。
任何人都可以轻松想象计算(x/y 坐标、轨迹、速度、加速度、暂停......)
之前的版本(跨千年错误开发...... 21 年前)运行到 Application.OnIdle
当前的流程听起来像这样:
对于每个 aCarArray 调用 TCAR.Execute 完成(使用 GetTickCount 在 deltaT 上进行计算);
对于每个 aCarArray 在屏幕上绘制汽车并更新一些值
Sleep(100) 使应用程序看起来像响应式
然后再次 ...
这种方法无法利用现代 CPU。
我想从在主线程中运行的 TCAR 对象数组移动到使用并行的类数组,但我找不到任何示例向我展示了一种创建并行工作的类的方法;计算应该是最连续的(大约一百辆车)。
目标是开发一个类

  • 创建那些 CAR 的数组。
  • 发送启动/停止命令。
  • 在屏幕上绘制汽车(通过主线程)
  • 享受(代码的)结果

  • 关于开始的最佳途径有什么建议吗?
    问候。
    乔瓦尼

    最佳答案

    您正在查找的类可以从 TThread 继承。覆盖 Execute 方法以在循环中实现您必须执行的处理。您可以安全地调用 Sleep 以您想要的速度进行计算。
    设计(或任何其他线程设计)中最重要的事情是您不能直接访问用户界面。您要么调用 Synchronize 在主线程的上下文中执行一个方法,要么从线程类向必须进行渲染的窗体或类发送消息。
    要在屏幕上绘制大量汽车,您可以考虑绘制到 TBitmap,然后在绘制完成后在屏幕上绘制位图。这将避免闪烁。

    关于class - Delphi XE 类使用并行 : how to?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65155779/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com