MQL中的异步和多线程编程 - 页 4 1234567891011...40 新评论 Andrey Pogoreltsev 2019.07.24 19:42 #31 亲爱的论坛用户。要使用多线程,你必须首先学习异步、多线程和多进程执行之间的本质区别,因为你在某些地方甚至无法理解你的逻辑。首先。其次,对外部DLL 的调用仍然存在,谁能阻止你用多线程实现自己的库并将其插入?第三,在mql中,什么任务需要多线程?更不用说你还得学习同步对象。你需要它吗?如果是这样,为你写一个dll是一件非常容易的事情。 Dmitry Fedoseev 2019.07.24 19:42 #32 Roman: 那么在DLL_PROCESS_ATTACH: 中初始化就可以从mql程序中调用了吗? 从mql程序中调用其位于dll中的函数。 Andrey Pogoreltsev 2019.07.24 19:44 #33 Dmitry Fedoseev: 从mql程序中调用其位于dll中的函数。 而描述他们的签名有什么问题呢?你是通过方法签名来拉动winapi的,对吗? Dmitry Fedoseev 2019.07.24 19:52 #34 Andrey Pogoreltsev: 那么描述他们的签名有什么问题呢?你不是通过方法签名以某种方式拉动winapi吗? 对不起,为什么要描述它们?我很抱歉,我没有拉到任何东西)) Andrey Pogoreltsev 2019.07.24 20:37 #35 Dmitry Fedoseev: 对不起,为什么要描述它们?我很抱歉,我没有拉到任何东西)) 对不起,我已经以为你在问了。 Roman 2019.07.24 20:41 #36 Andrey Pogoreltsev: 亲爱的论坛用户。 要使用多线程,你必须首先学习异步、多线程和多进程执行之间的本质区别,因为你在某些地方甚至无法理解你的逻辑。那是一个。 其次,对外部DLL 的调用仍然存在,谁能阻止你实现自己的多线程库并将其插入? 第三,你在mql上需要多线程的什么任务? 更不用说你还得学习同步对象。你需要它吗?如果你这样做,你就很容易写出一个dll。 Andrey,我想每个人都明白,异步和多线程是不同的东西。 由于CreateThread()函数在WinAPI inluder中被描述,所以人们认为可以使用线程。 IDE中没有描述类似于CreateTask()的函数,所以可能的异步代码编写的假设本身就消失了。 因此,重点放在了螺纹上。然而,事实证明,所描述的函数只是WinAPI的原型。 我再说一遍,任务是使用纯粹的WinAPI,描述的原型CreateThread()是误导性的。没有任何地方说这些是原型。 所有的任务都是不同的,所以我到了异步的方法,我相信总是异步地或在线程中写是更好的。 而养成总是异步写作的习惯,将使你能够写出快速的程序,并提高你作为专家的水平。 这是开发人员自己的基本原则,mql程序的执行速度,是我们的一切!"。 很遗憾,mql没有这样的功能。我向mql管理部门提出一个建议,为异步编程开发标准的mql函数。 因为存在线程问题,最重要的是安全问题。 对于异步模式,我认为不存在安全问题。 例子逻辑 在mql中实现EventLoop。 创建MqlTask类 将任务声明为MqlTask对象obj。 创建任务 task = obj.CreateTask(MyFunc())。 执行成功 = 任务 -> 运行()。 暂停执行成功 = 任务 -> SleepMs(ms)。 等待成功 = 任务 -> 等待(ms)。 无限期等待 success = task -> Wait(0); 在执行删除任务后,删除该任务。 和各种getStatuses来控制它。 Andrey Pogoreltsev 2019.07.24 20:54 #37 Roman: Andrey,我想大家都明白,异步模式和多线程是不同的东西。 WinAPI的inluder包含CreateThread()函数,我们曾假设可以使用线程。 由于IDE中没有描述类似于CreateTask()的函数,我们不应该考虑可能的异步代码编写。 因此,重点放在了螺纹上。然而,事实证明,所描述的函数只是WinAPI的原型。 我再说一遍,任务是使用纯粹的WinAPI,描述的原型CreateThread()是误导性的。没有任何地方说这些是原型。 所有的任务都是不同的,所以我得到了异步的。 我认为,最好总是异步或在线程中编写。 而养成的总是异步编写的习惯,将使你能够编写快速的程序,并提高你作为专家的水平。 这是开发人员自己的基本原则,mql程序的执行速度,是我们的一切!"。 可惜mql中没有这样的功能,所以我将向mql团队提出建议,开发一个标准的mql功能 异步编程,因为存在着线程的问题,最重要的是安全问题。 我认为异步模式不存在安全障碍。 制定出循环圈的实施方案,并在这些循环圈中执行任务。 决定你是要异步执行方法还是多线程执行方法。我使用套接字,例如,从mql异步工作。这些都是签名,这一点马上就清楚了,我们在安全的虚拟执行环境上谈论的是什么内部实现?那么你是如何设想的呢?再说一遍。那些知道如何处理线程的人将很容易为它写一个DLL,并在那里完成所有任务。是的,如果我没记错的话,在mql中也有异步方法,用于创建相同的订单和网络工作。你还需要哪些方法来实现异步?那么所有这些的实用性如何呢?你能给我一些一个线程的速度是不够的情况吗? Roman 2019.07.24 21:20 #38 Andrey Pogoreltsev: 决定你是要异步执行方法还是多线程执行方法。例如,我从mql中异步地处理套接字。 这些都是签名,这一点马上就清楚了,我们在安全的虚拟执行环境上谈论的是什么内部实现?你又是如何设想的呢? 再说一遍。那些知道如何处理线程的人将很容易为它写一个DLL,并在那里完成所有任务。 是的,如果我没记错的话,mql有异步方法来创建相同的订单并与网络一起工作。你还需要哪些方法来实现异步?而这一切的实用性是什么? 你能给我们一些速度不够的情况下,在一个线程中工作吗? 为了确定哪些是可以在mql中使用的,哪些是禁止的。 在inludes中发现了 CreateThread(),所以我认为它可以与线程一起工作。 但事实证明,线程是被禁止的,所以选择了异步,但如何在mql中使用异步也不清楚。 是的,这正是插座的问题所在。帮助说,可以创建不超过128个套接字,这限制了获得美国股票的信息,例如。 而即使是那些128个套接字,也不清楚如何将其转换为异步模式,并避免处理传入数据的延迟。 这就是为什么我不得不用另一种方式来寻找解决问题的方法,但我想用纯粹的WinAPI来解决这个问题,不需要任何自写的dll。 而如何在mql中异步工作,这很有意思,如果你有什么工作实例,如果你能分享信息,讨论一下会很好。 但是mql帮助中的标准异步方法我还没有看到。 Andrey Pogoreltsev 2019.07.24 22:03 #39 Roman: 为了确定哪些是可以在mql中使用的,哪些是禁止的。 我在代码的注入器中发现了 CreateThread(),所以我认为我可以处理线程。 但事实证明,线程是被禁止的,所以选择了异步,但如何在mql中使用异步也不清楚。 是的,这正是插座的问题所在。帮助说,可以创建不超过128个套接字,这限制了获得美国股票的信息,例如。 而且,即使是那些128个套接字,也不清楚如何将其转换为异步模式,避免处理传入数据的延迟。 这就是为什么我不得不用另一种方式来寻找解决问题的方法,但我想用纯粹的WinAPI来解决这个问题,不需要任何自写的dll。 而如何在mql中异步工作,这很有意思,如果你有什么工作实例,如果你能分享信息,讨论一下会很好。 但是mql帮助中的标准异步方法我还没有看到。 如果你想通过winapi与套接字进行异步工作,请使用winsock2。试试WSARecv和WSASend与OVERLAPPED和 WSAEVENT。然后等待... Georgiy Merts 2019.07.25 03:48 #40 我读了聪明的参与者的文章,我想知道... 所有这些噱头的意义何在? 在MQL中,什么时候会非常需要多线程? 对我来说,唯一的用途是策略测试,这是以标准方式实现的。 理想情况下,运行几个WebRequests 可能是有意义的,但我认为根本不需要多线程。 哪些任务首先需要多线程? 1234567891011...40 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
那么在DLL_PROCESS_ATTACH: 中初始化就可以从mql程序中调用了吗?
从mql程序中调用其位于dll中的函数。
从mql程序中调用其位于dll中的函数。
那么描述他们的签名有什么问题呢?你不是通过方法签名以某种方式拉动winapi吗?
对不起,为什么要描述它们?我很抱歉,我没有拉到任何东西))
对不起,为什么要描述它们?我很抱歉,我没有拉到任何东西))
亲爱的论坛用户。
Andrey,我想每个人都明白,异步和多线程是不同的东西。
由于CreateThread()函数在WinAPI inluder中被描述,所以人们认为可以使用线程。
IDE中没有描述类似于CreateTask()的函数,所以可能的异步代码编写的假设本身就消失了。
因此,重点放在了螺纹上。然而,事实证明,所描述的函数只是WinAPI的原型。
我再说一遍,任务是使用纯粹的WinAPI,描述的原型CreateThread()是误导性的。没有任何地方说这些是原型。
所有的任务都是不同的,所以我到了异步的方法,我相信总是异步地或在线程中写是更好的。
而养成总是异步写作的习惯,将使你能够写出快速的程序,并提高你作为专家的水平。
这是开发人员自己的基本原则,mql程序的执行速度,是我们的一切!"。
很遗憾,mql没有这样的功能。
我向mql管理部门提出一个建议,为异步编程开发标准的mql函数。
因为存在线程问题,最重要的是安全问题。
对于异步模式,我认为不存在安全问题。
例子逻辑
在mql中实现EventLoop。
创建MqlTask类
将任务声明为MqlTask对象obj。
创建任务 task = obj.CreateTask(MyFunc())。
执行成功 = 任务 -> 运行()。
暂停执行成功 = 任务 -> SleepMs(ms)。
等待成功 = 任务 -> 等待(ms)。
无限期等待 success = task -> Wait(0);
在执行删除任务后,删除该任务。
和各种getStatuses来控制它。
Andrey,我想大家都明白,异步模式和多线程是不同的东西。
WinAPI的inluder包含CreateThread()函数,我们曾假设可以使用线程。
由于IDE中没有描述类似于CreateTask()的函数,我们不应该考虑可能的异步代码编写。
因此,重点放在了螺纹上。然而,事实证明,所描述的函数只是WinAPI的原型。
我再说一遍,任务是使用纯粹的WinAPI,描述的原型CreateThread()是误导性的。没有任何地方说这些是原型。
所有的任务都是不同的,所以我得到了异步的。 我认为,最好总是异步或在线程中编写。
而养成的总是异步编写的习惯,将使你能够编写快速的程序,并提高你作为专家的水平。
这是开发人员自己的基本原则,mql程序的执行速度,是我们的一切!"。
可惜mql中没有这样的功能,所以我将向mql团队提出建议,开发一个标准的mql功能
异步编程,因为存在着线程的问题,最重要的是安全问题。
我认为异步模式不存在安全障碍。
制定出循环圈的实施方案,并在这些循环圈中执行任务。
决定你是要异步执行方法还是多线程执行方法。例如,我从mql中异步地处理套接字。
为了确定哪些是可以在mql中使用的,哪些是禁止的。
在inludes中发现了 CreateThread(),所以我认为它可以与线程一起工作。
但事实证明,线程是被禁止的,所以选择了异步,但如何在mql中使用异步也不清楚。
是的,这正是插座的问题所在。帮助说,可以创建不超过128个套接字,这限制了获得美国股票的信息,例如。
而即使是那些128个套接字,也不清楚如何将其转换为异步模式,并避免处理传入数据的延迟。
这就是为什么我不得不用另一种方式来寻找解决问题的方法,但我想用纯粹的WinAPI来解决这个问题,不需要任何自写的dll。
而如何在mql中异步工作,这很有意思,如果你有什么工作实例,如果你能分享信息,讨论一下会很好。
但是mql帮助中的标准异步方法我还没有看到。
为了确定哪些是可以在mql中使用的,哪些是禁止的。
我在代码的注入器中发现了 CreateThread(),所以我认为我可以处理线程。
但事实证明,线程是被禁止的,所以选择了异步,但如何在mql中使用异步也不清楚。
是的,这正是插座的问题所在。帮助说,可以创建不超过128个套接字,这限制了获得美国股票的信息,例如。
而且,即使是那些128个套接字,也不清楚如何将其转换为异步模式,避免处理传入数据的延迟。
这就是为什么我不得不用另一种方式来寻找解决问题的方法,但我想用纯粹的WinAPI来解决这个问题,不需要任何自写的dll。
而如何在mql中异步工作,这很有意思,如果你有什么工作实例,如果你能分享信息,讨论一下会很好。
但是mql帮助中的标准异步方法我还没有看到。
我读了聪明的参与者的文章,我想知道...
所有这些噱头的意义何在?
在MQL中,什么时候会非常需要多线程? 对我来说,唯一的用途是策略测试,这是以标准方式实现的。
理想情况下,运行几个WebRequests 可能是有意义的,但我认为根本不需要多线程。
哪些任务首先需要多线程?