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

 
Алексей Тарабанов:

两个,或二十二个线程可以是同步的或异步的。一个线程可以同时包括同步和异步操作。你已经指出了如何。平行的不知道如何包括平行的。

嗯,是的。你不能在一个线程中包括平行计算。同步和异步操作可以在一个或多个线程中进行。只是,单线程异步基本上是一个优化的操作序列,其稳定性不如多线程异步。如果一个线程发生故障,系统将继续运行,停止的进程的操作可以被分离到其他线程中,以保持服务性。如果只有一个线程,系统就会瘫痪)。

在一个线程中随机除以0,仅此而已。
 

例子:有一个同步函数在线程1中运行,等待来自线程2、3和4的数据,而分布在线程5、6、7和8中的函数正在等待结果。

所有人都站起来,等待结果。现在,请注意:如果同步函数正在等待其线程的数据怎么办?而且,上帝保佑,这个数据取决于其结果?

 
Реter Konow:

在一个线程中随机除以0,仅此而已。

不,这还不是全部。

 
Алексей Тарабанов:

例子:有一个同步函数在线程1中运行,等待来自线程2、3和4的数据,而分布在线程5、6、7和8中的函数正在等待结果。

所有人都站起来,等待结果。现在,请注意:如果同步函数正在等待其线程的数据怎么办?而且,上帝保佑,这个数据取决于它的结果?

好吧,我自己来回答。

帆布将开始闪烁。

 
Koldun Zloy:

我将翻译MT开发公司的代表已经告诉你的内容。

你不能从MQL创建线程。即使使用WinAPI也不行。

你只有通过编写你自己的DLL才能做到这一点。


你可以,MQL5\Include\WinAPI\processthreadsapi.mqh有一个包装器
HANDLE CreateThread(PVOID thread_attributes,ulong stack_size,PVOID start_address,PVOID parameter,uint creation_flags,uint &thread_id) 。

但如何处理通过MQL的轨道?这就是为什么他们写道,我们必须创建一个DLL,并在那里与他们一起工作。


 

Alexei Tarabanov:

例子:有一个同步函数在线程1中运行,等待来自线程2、3和4的数据,而分布在线程5、6、7和8中的函数正在等待结果。

所有人都站起来,等待结果。现在,请注意:如果同步函数正在等待其线程的数据怎么办?而且,上帝保佑,这个数据取决于它的结果?

Alexei Tarabanov:

好吧,我自己来回答。

帆布将开始闪烁。

突出显示没有任何意义。

关于其他轨道,在数据准备好之前,将等待。没有什么会眨眼。