Programação assíncrona e multi-tarefa em MQL - página 8

 
Dmitry Fedoseev:

Parece que a diferença especial entre assíncrono e multithreading vem da mesma área que a questão do ponteiro/ diferença de referência que aflige algumas pessoas.

A assincronia é implementada através de uma linha separada e não é tão importante se este processo é fornecido pelo processador ou por qualquer outro dispositivo. A criação de um processo implica sua assincronia porque existe em paralelo.

A Asynchrony é implementada na mesma linha de execução do programa, através do EventLoop, mas como o EventLoop é implementado é uma prerrogativa dos desenvolvedores, como implementá-lo.
Os mesmos manipuladores padrão em mql, por exemplo o OnTimer trabalha em seu próprio loop, e esta é uma espécie de EventLoop,
Se você quiser criar um manipulador separado para métodos assíncronos, todas as tarefas serão perfeitamente executadas em um loop assíncrono.

 
Roman:

A assíncronia é implementada na mesma linha de execução do programa, através do EventLoop, mas como o EventLoop é implementado, é uma prerrogativa dos desenvolvedores, como implementá-lo.
Os mesmos manipuladores padrão em mql, por exemplo o OnTimer trabalha em seu próprio loop, esta é uma espécie de EventLoop,
Se você quiser criar um manipulador separado para métodos assíncronos, todas as tarefas serão perfeitamente executadas em um loop assíncrono.

Desculpe, onde a assincronia é implementada via EventLoop?

Você pode fazer algo como EventLoop agora, os desenvolvedores de terminais não são necessários aqui de forma alguma.

 
Dmitry Fedoseev:

Desculpe, onde a assincronia é implementada via EventLoop?

Você mesmo pode fazer algo como o EventLoop agora, os desenvolvedores de terminais não são de todo necessários aqui.

O EventLoop é implementado em asyncio, e como acho que o mesmo princípio é usado em outras bibliotecas assíncronas.
Mesmo o WinAPI, como eu o entendo, utiliza o princípio do evento para assíncronia.
Atualmente, não podemos implementar o modo assíncrono completo utilizando ferramentas padrão,
A razão é que o manipulador OnTimer, por exemplo, não controla a execução das tarefas e, em vez disso, executa o loop sequencialmente.
Ou seja, falta ao manipulador o mecanismo de execução assíncrona de tarefas.

 

Todos pesquisam no Google o conceito de impasse!

Na MQL5, a adição de roscas quebrará o sistema de teste e toda a nuvem de agentes irá cair.

Uma solução para esta limitação é possível com DLLs. Se você não quer aprender C#, C++, C, Python - esse é o seu problema. No mundo de hoje, um programador deve conhecer vários idiomas para selecionar corretamente uma ferramenta para uma determinada tarefa.

Aqueles que conhecem 1C não são considerados programadores. O mesmo é válido para a MQL5.

 
Roffild:

Todos pesquisam no Google o conceito de impasse!

Na MQL5, a adição de roscas quebrará o sistema de teste e toda a nuvem de agentes irá cair.

Uma solução para esta limitação é possível com DLLs. Se você não quer aprender C#, C++, C, Python - esse é o seu problema. No mundo de hoje, um programador deve conhecer vários idiomas para selecionar corretamente uma ferramenta para uma determinada tarefa.

Aqueles que conhecem 1C não são considerados programadores. O mesmo é válido para a MQL5.

Se o programa MQL multi-rosca quebra o sistema de teste, então que diferença faz, se é anexado através de uma DLL ou de uma DLL normal? Em qualquer caso, você terá que escolher entre teste e multi-tarefas. Mas é melhor escolher dentro da MQL, porque a integridade é uma vantagem para o programa.
 
Roffild:

Todos pesquisam no Google o conceito de impasse!

Na MQL5, a adição de roscas quebrará o sistema de teste e toda a nuvem de agentes irá cair.

Uma solução para esta limitação é possível com DLLs. Se você não quer aprender C#, C++, C, Python - esse é o seu problema. No mundo de hoje, um programador deve conhecer vários idiomas para selecionar corretamente uma ferramenta para uma determinada tarefa.

Aqueles que conhecem 1C não são considerados programadores. O mesmo é válido para a MQL5.

Durante os testes, todas as tarefas podem ser resolvidas uma a uma e os resultados podem ser devolvidos em determinados momentos (você pode esperar no testador). Não só você pode, mas deve, para que corresponda à realidade.

O que será que os programadores do 1C pensam sobre isso? Eles estão interessados na opinião de outra pessoa?

 
Реter Konow:
Se o programa MQL multi-rosca quebra o sistema de teste, então que diferença faz, se é anexado através de uma DLL ou de uma DLL normal? Em qualquer caso, você terá que escolher entre teste e multi-tarefas. Mas é melhor escolher dentro da MQL, porque a integridade é uma vantagem para o programa.
Geralmente, é necessário multi-tarefas no modo normal. Os testes sempre funcionam com um pequeno módulo do programa - uma estratégia, e todas as outras capacidades do programa têm um descanso. Visualização e assim por diante. Assim, durante os testes, somente a rosca onde o módulo de estratégia está localizado estará funcionando. Algumas funções e eventos regulares são desativados no testador, portanto, deixe os fios também serem desativados.
 
Реter Konow:
Se o programa MQL multi-rosca quebra o sistema de teste, que diferença faz se ele está ligado via DLL ou direto? Em qualquer caso, você terá que escolher entre teste e multi-tarefas. Mas é melhor escolher dentro da MQL, porque a integridade é uma vantagem para o programa.

Há uma diferença. DLLs não são permitidas na nuvem. E as próprias DLLs são desativadas desde o início. Ao permitir a permissão para DLLs, você está abdicando da responsabilidade de execução segura do código.

 
Roman:

O EventLoop é implementado em asyncio, e acredito que o mesmo princípio é usado em outras bibliotecas assíncronas.
...

Outras bibliotecas assíncronas não utilizam este princípio.

 
Dmitry Fedoseev:

Outras bibliotecas assíncronas não utilizam este princípio.

Isto foi apenas um palpite, eu não verifiquei onde mais é usado.
Procurei no Google quais idiomas usam o EventLoop, é Py, JS, Qt, provavelmente mais alguns.
A questão não é onde ela é aplicada, mas na própria tecnologia sem o uso de fios.
Então por que não pedir emprestada a tecnologia e implementar em mql seu EventLoop?