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

 
Реter Konow:

Se eles adicionarem multithreading, isso o fará sentir-se pior? E assim eles acrescentaram muitas coisas à MQL, e é uma coisa realmente útil. Mas sua utilidade só pode ser compreendida por uma pessoa, que escreve programas muito complexos e incômodos em MQL. Se você não entende para que serve a multi-tarefa, isso significa que você não escreve tais programas. Quando o fizer, você vai entender. É muito simples. ))

A multi-tarefa é definitivamente necessária, especialmente no modo de teste, especialmente no modo multi-instrumento. Muitas vezes me falta desempenho. Mas eu não sou especialista em programação e não entendo muito bem as sutilezas, só sei que preciso contar muitas coisas em paralelo). E o paralelismo do testador seria extremamente útil.
 
Реter Konow:

Se eles adicionarem multithreading, isso o tornará pior?

definitivamente não - será melhor, ! - MAS a pergunta chave aqui é apoio - quem explicará como usá-lo? - Quem irá corrigir bugs? - Quem garantirá uma funcionalidade compreensível?

De acordo com a idéia básica dos desenvolvedores de como e quem usar MT, eles fornecem funcionalidades correspondentes ao C++, removendo assim a "dor de cabeça" do treinamento e explicando como ele funciona - a literatura sobre C++ e exemplosde como escrever programas de nível básico na web há 20 anos tem coletado muito

Você já viu um pacote pronto (de acordo com o problema da TC) que seria aplicado ao C++?

 
Igor Makanu:

"especialistas"? - Você não tem nada para falar, empurre seu imho... Esta é uma grande comunidade MQL com profissionais de diferentes áreas, infelizmente, você não mostrou nenhum de seus conhecimentos que seria útil à comunidade, você pode me acusar de qualquer coisa que você queira - "você é o especialista! "


Os desenvolvedores vão fazer? - Você não consegue explicar nem mesmo por que é necessário, não é mesmo? )))

qual é o objetivo do MetaQoutes? - o objetivo, como qualquer empresa de TI para obter lucro! não sei por que, MetaQoutes é muito sério em promover seus serviços, muito trabalho tem sido feito para popularizar o comércio algorítmico, para dar material analítico, para criar uma comunidade online... este tipo de caridade somente algumas empresas de TI fazem, geralmente os gigantes de TI

portanto, a empresa gasta seus recursos em algo que no futuro (não tenho certeza) terá lucro.... e então, eis e eis... aparece um usuário que precisa adaptar o conceito de Python ou Java retardado à MQl.... Você não acha que é engraçado? - quantos anos você tem? ))))


Respeito que a persistência é freqüentemente a única maneira de encontrar seu nicho na vida! Boa sorte neste trabalho árduo!

Não há nada para falar com você sobre este tema!
Você não tem nem mesmo lógica suficiente para entender o benefício efetivo que a MetaQuotes terá ao ser capaz de escrever programas assíncronos.
E atrairá realmente especialistas, que escrevem programas assíncronos.
E há especialistas suficientes na comunidade, com os quais você pode discutir problemas e idéias, e não ouvir a si mesmo, eu sou um especialista.
Infelizmente, para ser um especialista, você precisa acompanhar a tecnologia, não importa em qual idioma ela seja usada.
Você nem sequer ouve o que lhe dizem que C++ também é escrito de forma assíncrona, mas provavelmente você não entendeu, você não definiu tarefas assíncronas.
E vamos moderar seu ardor, você não pode nem mesmo se comunicar normalmente.

 
Roman:

Não há nada para falar com você sobre este tema!

não fale, mas ainda não há resposta:


responder à pergunta por que o terminal comercial precisa dele?
 
Maxim Romanov:
A multi-tarefa é definitivamente necessária, especialmente no modo de teste, especialmente no modo multi-instrumento. Muitas vezes me falta desempenho. Mas eu não sou especialista em programação e não entendo muito bem as sutilezas, só sei que preciso contar muitas coisas e em paralelo). E o paralelismo do testador seria extremamente útil.
E vou desenvolver a visualização tridimensional, e não é razoável colocá-la em uma única linha com cálculos, eventos de interface, eventos externos (chamadas ao servidor). A DLL não é adequada sempre por uma razão - você não pode distribuir livremente os programas.
 
Igor Makanu:

definitivamente não - será melhor, ! - MAS a pergunta chave aqui é apoio - quem explicará como usá-lo? - Quem irá corrigir bugs? - Quem garantirá que a funcionalidade seja compreensível?

...

Do meu ponto de vista, este é o menor dos problemas. O principal é que as pessoas se comunicarão sobre este tópico. O fórum precisa de novos tópicos. Não é? Só vai melhorar. Bem, o que será crítico se houver problemas e bugs entre os usuários? E quando não havia nenhum? )

 
Andrey Pogoreltsev:

Você exige a execução assíncrona de consultas, mas cite a multi-tarefa como exemplo... Eu o exortei a descobrir, mas você nunca descobriu.

Eu lhe dei uma solução para seu exato problema aqui: https://www.mql5.com/ru/forum/318593/page4#comment_12568119

Mas tenho certeza de que você ainda nem estudou o assunto.

Parece-me que, se você lhe der uma fila assíncrona, ainda pedirá multithreading... Pelo menos tente lidar com OVERLAPPED e eventos para começar, não está pedindo WinAPI em seu código).

Se você introduzir multithreading no terminal, ele se enterrará de lamentáveis programadores, mais rápido que a velocidade da luz.

Os programadores estão procurando soluções para os problemas, não pedindo que a estrutura seja mudada para se adequar à sua ignorância.

Não, você está errado, eu olhei tudo isso e com certeza vou olhar para isso.
A propósito, você é o único que deu pelo menos uma boa direção, obrigado, do resto apenas flub.
Há muitas pessoas que não entendem a essência do tema, por isso tive que responder suas perguntas. Foi por isso que tive que responder às perguntas deles. Foi por isso que o assunto ficou maior.
Existem várias tecnologias para conexão multithreading ou assíncrona, é por isso que muitas delas não a entendem.
E eu tive que dar amostras apressadas da Internet, mas até mesmo elas explicam, pelo menos de alguma forma, a essência da tecnologia.
Ninguém se preocupou em mostrar outras tecnologias e explicar como elas funcionam, um refrão.

 
Roman:

Não, não, você está errado, eu investiguei tudo, vou investigar isso de forma inequívoca.
A propósito, você é o único que deu pelo menos alguma direção verdadeira obrigado, os outros apenas flubrificaram.
Há apenas muitas pessoas que não entendem a essência do tema, por isso tive que responder suas perguntas. Foi por isso que tive que responder às perguntas deles. Foi por isso que o assunto ficou maior.
E sobre a conexão multithreading ou assíncrona existem algumas tecnologias, e é por isso que muitos não têm compreensão.
E eu tive que dar amostras apressadas da Internet, mas até mesmo elas explicam, pelo menos de alguma forma, a essência da tecnologia.
Ninguém se preocupou em mostrar outras tecnologias e explicar como elas funcionam, um refrão.

Multithreading - tarefas executadas em múltiplas roscas. Pode funcionar em um único processador, ainda multithreading e alternando entre eles à medida que as cotas de tempo do processador se esgotam. Requer sincronização para acesso a recursos compartilhados. Pode levar a bloqueios, condição racial, bugs deliberação de memória e outras "surpresas".

Assíncrono - execução de função não bloqueada (ou seja, o controle é imediatamente retornado após a saída do método), geralmente em outros dispositivos (equipamentos de rede, dispositivos de armazenamento, periféricos, etc.). Por exemplo, é possível escrever um servidor multi-usuário de alto desempenho usando apenas uma conexão de cliente thread e máquina final de processamento. Tudo depende da finalidade deste servidor.

No seu caso, você precisa criar um grande número de conexões usando WinAPI e pode verificar o estado dessas conexões através do WaitForMultipleObjects com um timeout, para que você não mantenha uma linha de tempo, por exemplo.

PS. Teoricamente, o IOCompletionPort também poderia ser usado, mas requer mais conhecimento e design cuidadoso.
 
Andrey Pogoreltsev:

Multithreading - tarefas executadas em múltiplas roscas. Pode funcionar em um único processador, ainda multithreading e alternando entre eles à medida que as cotas de tempo do processador se esgotam. Requer sincronização para acesso a recursos compartilhados. Pode levar a impasse, condição racial, erros de liberação de memória e outras "surpresas".

É realmente assim tão perigoso? Erros na liberação de memória... No entanto, os Expert Advisors trabalham em diferentes gráficos em diferentes linhas e não há falhas inesperadas. Então, as tarefas distribuídas entre as EA não causarão erros críticos, mas as tarefas distribuídas entre os fios dentro de uma EA causarão? É claro que não sou especialista nestes assuntos, mas qual é o problema em mudar o método de distribuição de tarefas entre os EA para um único EA? Talvez haja um problema, eu não discuto.

 
Andrey Pogoreltsev:

Multithreading - tarefas executadas em múltiplas roscas. Pode funcionar em um único processador, ainda multithreading e alternando entre eles à medida que as cotas de tempo do processador se esgotam. Requer sincronização para acesso a recursos compartilhados. Pode levar a bloqueios, condição racial, bugs de liberação de memória e outras "surpresas".

Assíncrono - execução de função não bloqueada (ou seja, o controle é imediatamente retornado após a saída do método), geralmente em outros dispositivos (equipamentos de rede, dispositivos de armazenamento, periféricos, etc.). Por exemplo, é possível escrever um servidor multi-usuário de alto desempenho usando apenas uma conexão de cliente thread e máquina final de processamento. Tudo depende da finalidade deste servidor.

No seu caso, você precisa criar um grande número de conexões usando WinAPI e você pode verificar o estado dessas conexões com WaitForMultipleObjects com um timeout, para que você não tenha que segurar uma rosca temporizada, por exemplo.

PS. Teoricamente, você também poderia usar o IOCompletionPort, mas ele requer mais conhecimento e um design claro.

Agora, isso é uma conversa, eu fiz execução não bloqueada com asyncio, mas se você escrever a palavra coroutine ou calback aqui, há muita confusão e eu prefiro não dizer nada ))
Conheço o princípio do não-bloqueio, mas apenas em píton e mais uma biblioteca C e C++.
Eu nunca trabalhei com WinAPI, eu vou estudar, eu estava olhando para outras bibliotecas, mas não faz diferença, o principal é entender a sintaxe, e eu entendo o que está lá ))))
Mas durante a conversa eu sugeri adicionar tal funcionalidade ao mql regular, para permitir a escrita de código assíncrono fora da caixa.
E começamos a ficar confusos porque não entendíamos para quê e por quê. Porque é porque ))