具有异步多线程计算演示的伪指标 - MetaTrader 5脚本


该指标是一个没有缓冲区的伪指标。它的唯一目的是演示多线程计算技术。该指标可以发出进行冗长计算的命令,这些计算在单独的线程中执行,由工作专家顾问为图表对象创建。包含的头文件中提供的类 -多线程对象工作者.mqh - 将自动创建图表对象并在每个对象中应用具有指定工人专家顾问的模板。计算完成后,对象会自动从图表中删除。
此示例适用于具有编程背景的用户。
这个想法来自于关于多线程异步 Web 请求。请在本文中查找有关如何分派消息(事件)以及如何使用资源在图表之间传递数据的所有技术详细信息。
该指标通过使用图表对象而不是成熟的图表窗口,利用比本文中更“紧凑”的技术实现。您可能会找到有关的详细信息论坛。
Make sure the worker expert adviser - 多线程对象工作者- 在编译和运行指标本身之前进行编译 -多线程指示器。
Each pseudo-task calculates a bunch of sqrt functions (for demo purposes only). This can be changed in your MQL projects to any other time-consuming algorithms.
要在指标附加到图表后开始并行计算,请单击图表。流程的所有重要阶段(在客户端和工作 MQL5 程序中)都会被记录。
发出并行计算请求的客户端 MQL 程序不仅可以是指标,还可以是专家顾问。该平台不支持脚本和服务。
使用头文件 MultiThreadedObjectWorker.mqh,您应该在 MQL5 客户端和工作器 Expert Advisor 之间实现您自己的数据编组。
这是日志的 2 个示例。

在2个核心上执行4个任务(2个线程并行)
当在 2 个内核上运行 4 个任务时,有 2 个并行线程,其执行速度是 1 个内核上的两倍(比较上面的 3354 毫秒和下面的 6240 毫秒)。

在 1 个核心上执行 4 个任务(单线程 - 标准 MQL 程序)
更多核心 - 更快速度。
附件下载
📎 multithreadedindicator.mq5 (3.93 KB)
📎 multithreadedobjectworker.mqh (18.27 KB)
📎 custommultithreadedexample.mqh (1.1 KB)
📎 typetobytes.mqh (20.54 KB)
📎 resourcedata.mqh (1.71 KB)
📎 resource.mqh (0.64 KB)
📎 convert.mqh (3.42 KB)
📎 expert.mqh (13.27 KB)
📎 multithreadedobjectworker.mq5 (2.24 KB)
Source: MQL5 #27644
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
