MQL中的异步和多线程编程 - 页 3

 
Vict:

一些我们不理解对方的东西。

但不要陷入困境--你不会通过μl内部的CREATTrade()创建一个线程,你需要传递一个指向函数的指针(线程将从那里开始),但如上所述--库库什。

制作你自己的DLL,由它自己创建合适数量的线程。

如果你想做复杂的计算,那么纯粹的WinAPI调用是不够的。

是的,我们在内部做了很多WinAPI调用原型,但这并不意味着所有这些都可以从MQL中干净地调用。

 
Igor Makanu:

没有人移植过任何东西,你在endunnels中看到的只是函数签名。

要创建一个线程,你需要函数的主体--这就是将在线程中运行的主体!

要在Windows中注册一个线程,你需要填入结构。

lpStartAddress - 这是函数的入口点地址,将在线程中运行,不用担心内存分配 问题

要解决这个问题,你需要找到一个机会来获得MyFunc()的地址--在内存中,而它是不存在的--好吧,根本就不存在......没有!


我不知道该如何解释这个问题......。这并不是本质))))

这是一个在inluder中的移植函数,有参数,有什么区别?

HANDLE  CreateThread(PVOID thread_attributes, 
                     ulong stack_size, 
                     PVOID start_address, 
                     PVOID parameter, 
                     uint creation_flags, 
                     uint &thread_id);

这里是移植后的函数,得到了函数的地址

PVOID  GetProcAddress(HANDLE module,
                      uchar &proc_name[]);
 

事实上,你不能完全从MQL调用CreateThread,因为函数的物理地址是不可用的。

你需要制作你自己的DLL,它将提供真正的处理程序。

 
MetaQuotes Software Corp.:

事实上,你不能完全从MQL调用CreateThread,因为函数的物理地址是不可用的。

你需要制作你自己的DLL,它将提供真正的处理程序。

遗憾的是。他们移植了CreateThread();和GetProcAddress();
你不能获得函数的物理地址,有什么诀窍吗?))
安全是一件好事,但正如你所看到的,它限制了对标准WinAPI的使用。
为什么这些函数被移植并包含在标准的mql库中?
误导用户,如果你不能使用它们))
你建议使用标准的WinAPI编写你自己的异步dll,我想摆脱它。
但我想我得回去写我自己的异步dll了。

p.s.
这里有mql的隐患,对于那些喜欢一直发到google的人来说,没有这些信息的定义。

 
Roman:

遗憾的是。他们移植了CreateThread();和GetProcAddress();
,而
你不能得到函数的物理地址,有什么诀窍吗?))
安全是一件好事,但正如你所看到的,它限制了对标准WinAPI的使用。
为什么这些函数被移植并包含在标准的mql库中?
误导用户,如果你不能使用它们))
你建议使用标准的WinAPI编写你自己的异步dll,我想摆脱它。
但我想我得回去写我自己的异步dll了。

p.s.
这里有mql的隐患,对于那些喜欢一直发到google的人来说,没有这些信息的定义。

不要混淆WinAPi功能的原型设计 和移植功能。

我们特意在提供标准WinAPI函数的原型方面做了很好的工作,以便开发者不必重新发明车轮。这些不是图书馆,它们是描述。

拥有原始的WinAPI描述并不意味着我们为不安全的调用提供了保证/机会。

在这种级别的应用语言中,安全是最重要的。

 
嗯...那么另一个问题就出现了。
那么如何从mql中正常初始化要加载的dll和要导出的函数呢?

LoadLibraryW("MyDll.dll");
GetProccAddress(hMyDll, "MyFunc");
 
Roman:
嗯...那么另一个问题就出现了。
那么如何从mql中正常初始化可加载的dll,以及导出的函数?

你能阅读吗?你能使用搜索引擎吗?在这个资源上有20多篇关于编写DLL的文章,有些文章是第一手资料--由管理员(开发人员)编写的,阅读,做,所有的东西都是免费的,--没有更详细的说明如何在完全不懂编程语言的情况下编写DLL,但只有在这个资源上- 甚至有照片!

你想达到什么目的?- 水灾的禁令?

罗马 人。

但我想我得回去写我的异步dll了。

是什么阻碍了你的写作? 你需要扇形的声音吗?- 任何熟悉基本的C++或者更简单的C#的人--在一天之内就能找到这些信息,写出并检查代码,这里你只需要 "欲望和勤奋"--所以一个管理员写道,我认为,不可能选择更精确的表达。



SZS: 我不记得有一个案例,一个管理员会在一个小时内给一个用户写这么多回复,是有什么变化,还是星辰大海如此排列?)))))

 
Igor Makanu:

你能阅读吗?你能使用搜索引擎吗?在这个资源上有20多篇关于编写DLL的文章,有些文章是第一手资料--由管理员(开发人员)编写的,阅读,做,一切都在免费访问中,--没有更详细的说明如何在没有任何编程语言知识的情况下编写DLL,但只有在这个资源上!。- 甚至有照片!

你想达到什么目的?- 水灾的禁令?

SZS: 我不记得有哪个管理员在一个小时内给一个用户写了这么多回复的情况,是不是有什么变化?)))))

在这些文章中,没有关于dll和函数的初始化的描述!!!。
告诉我哪里描述了dll库的初始化和可导出的函数,我将不胜感激。
没有必要认为人们在提到一个论坛之前不会阅读文章!

伊戈尔-马卡努

是什么阻止了你的写作? 你需要大肆宣传吗?- 任何知道基本的C++或甚至更简单的C#的人都可以用谷歌搜索这些信息,写出它并在代码中检查,你所需要的只是 "欲望和一个蹒跚的屁股"--一位管理员这样写道,我认为,这种表达方式再精确不过了。

没有什么能阻止!任务是使用纯粹的WinAPI。没有任何自写的dll!
这个话题是为了讨论mql中的多线程编程问题而设立的,你今天的态度有些消极,在我创建的话题中泛滥成灾?
请不要做这样的评论。

 
Roman:
嗯...然后另一个问题出现了。
那么如何从mql中正常初始化要加载的dll和要导出的函数?

你不需要把这些函数拉到mql中。在dll中创建进程。

 
Dmitry Fedoseev:

你不需要把这些函数拉到mql中。在dll中创建进程。

你的dll,在DLL_PROCESS_ATTACH 中初始化它:是否足以从mql程序中调用?
以为可以顺利使用WinAPI函数,而封闭的dll必须另外初始化,
LoadLibraryW("MyDll.dll")