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

 
Vict:

Algo que não entendemos um ao outro.

Mas não se preocupe - você não vai criar um fio via CriAtTrade() dentro do µl, você precisa passar um ponteiro para uma função (onde o fio começará), mas como observado acima - kukush.

Faça sua própria DLL que cria o número certo de fios por si só.

Se você quiser fazer cálculos complexos, então chamadas WinAPI puras não são suficientes.

Sim, fizemos muitos protótipos de chamadas WinAPI internamente, mas isso não significa que todos eles possam ser chamados de forma limpa a partir da MQL.

 
Igor Makanu:

ninguém portou nada, o que você vê na unidade final são apenas assinaturas de funções

para criar um fio, você precisa do corpo da função - esse é o corpo que vai funcionar no fio!

Para registrar um tópico no Windows, é necessário preencher a estrutura:

verlpStartAddress - este é o endereço do ponto de entrada da função que será executada na thread, não se preocupe com a alocação de memória

para resolver este problema, você precisa encontrar uma oportunidade de obter o endereço do MyFunc() - em memória, e ele está ausente - bem, em nenhum lugar ... nenhuma!


Não sei como explicar o problema de outra forma ... o que não é a essência ))))

Aqui está uma função portada em um inluder, com parâmetros, qual é a diferença?

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

E aqui está a função portada, obtendo o endereço da função

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

Na verdade, não é possível chamar a CreateThread totalmente da MQL porque os endereços físicos das funções não estão disponíveis.

Você precisa fazer sua própria DLL que fornecerá verdadeiros manipuladores.

 
MetaQuotes Software Corp.:

Na verdade, não é possível chamar a CreateThread totalmente da MQL porque os endereços físicos das funções não estão disponíveis.

Você precisa fazer sua própria DLL que fornecerá verdadeiros manipuladores.

Que chatice. Eles portaramCreateThread(); eGetProcAddress();
E
você não consegue obter endereços físicos de funções, qual é o truque? ))
A segurança é uma coisa boa, mas, como você vê, ela restringe o uso do WinAPI padrão.
Por que estas funções foram portadas e incluídas na biblioteca padrão de mql?
Enganar o usuário, se você não puder usá-los))
E você sugere escrever sua própria dll assíncrona, da qual eu queria me livrar, usando o WinAPI padrão
Mas acho que terei que voltar a escrever minha própria dll assíncrona.

p.s.
Aqui estão as armadilhas do mql, para aqueles que gostam de enviar o tempo todo para o google, não há esta informação por definição.

 
Roman:

Que chatice. Eles portaramCreateThread(); eGetProcAddress();
E
você não pode obter os endereços físicos das funções, qual é o truque? ))
A segurança é uma coisa boa, mas, como você vê, ela restringe o uso do WinAPI padrão.
Por que estas funções foram portadas e incluídas na biblioteca padrão de mql?
Enganar o usuário, se você não puder usá-los))
E você sugere escrever sua própria dll assíncrona, da qual eu queria me livrar, usando o WinAPI padrão
Mas acho que terei que voltar a escrever minha própria dll assíncrona.

p.s.
Aqui estão as armadilhas do mql, para aqueles que gostam de enviar o tempo todo para o google, não há esta informação por definição.

Não confunda as funções de protótipo WinAPi e a funcionalidade de portabilidade.

Fizemos um grande trabalho propositalmente para fornecer protótipos de funções padrão WinAPI, para que os desenvolvedores não tenham que reinventar a roda. Estas não são bibliotecas, são descrições.

Ter descrições WinAPI brutas não significa que fornecemos uma garantia/oportunidade para chamadas inseguras.

Em uma linguagem de aplicação deste nível, a segurança é primordial.

 
Hmmm... Então surge outro problema.
Como então da mql para normalmente inicializar a dll a ser carregada e as funções a serem exportadas ?

LoadLibraryW("MyDll.dll");
GetProccAddress(hMyDll, "MyFunc");
 
Roman:
Hmm... Então surge outro problema.
Como então a partir da mql normalmente inicializar a dll carregável, e as funções exportadas ?

você pode ler? você pode usar o mecanismo de busca? há mais de 20 artigos sobre como escrever DLLs neste recurso, alguns artigos são escritos em primeira mão - por administradores (desenvolvedores), ler, fazer, tudo está em acesso livre, - não há instruções mais detalhadas sobre como escrever uma DLL sem nenhum conhecimento de linguagens de programação, mas somente sobre este recurso! - mesmo com fotos!

o que você está tentando realizar? - proibição de inundação?

Romano:

Mas acho que terei que voltar a escrever minha dll assíncrona.

o que o impede de escrever? você precisa de sons de fanfarra? - qualquer pessoa que esteja familiarizada com C++ básico ou ainda mais simples em C# - durante um dia é capaz de encontrar estas informações, escrever e verificar no código, aqui você só precisa de "desejo e assiduidade" - então um dos administradores escreveu, imho, é impossível escolher a expressão mais precisa



SZS: Não me lembro de um caso em que um administrador tivesse escrito tantas respostas a um usuário em uma hora, algo tivesse mudado, ou as estrelas alinhadas assim? )))))

 
Igor Makanu:

você pode ler? você pode usar o mecanismo de busca? há mais de 20 artigos sobre como escrever DLLs neste recurso, alguns artigos são escritos em primeira mão - por administradores (desenvolvedores), ler, fazer, tudo está em acesso livre, - não há instruções mais detalhadas sobre como escrever uma DLL sem conhecer as linguagens de programação, mas somente neste recurso! - mesmo com fotos!

o que você está tentando realizar? - proibição de inundação?

SZS: Não me lembro de um caso em que um administrador escreveu tantas respostas a um usuário em uma hora, alguma coisa mudou? )))))

Não há descrição nestes artigos sobre inicialização de dll e funções !!!
Mostre-me onde está descrita a inicialização da biblioteca dll e asfunções exportáveis, eu só ficaria grato.
Não é preciso pensar que as pessoas não lêem artigos antes de se referirem a um fórum!

Igor Makanu:

o que está impedindo você de escrever? você precisa de fanfarra? - qualquer um que conheça o c++ básico ou mesmo o C# mais simples pode pesquisar esta informação no Google, escrevê-la e verificar no código, tudo o que você precisa é "desejo e um rabo penoso" - então escreveu um dos administradores, imho, a expressão não poderia ser mais precisa

Nada impede! A tarefa era usar o WinAPI puro. Sem nenhuma dll autoescrita!
Este tópico foi criado para discutir o problema da programação multi-tarefa em mql, você tem algum tipo de atitude negativa hoje, que tipo de inundação no tópico criado por mim?
Por favor, abstenha-se de tais comentários.

 
Roman:
Hm... Depois surge outro problema.
Como então da mql para normalmente inicializar a dll a ser carregada e as funções a serem exportadas ?

Você não precisa puxar estas funções para o mql. Crie processos lá na dll.

 
Dmitry Fedoseev:

Você não precisa puxar estas funções para o mql. Crie processos lá em dll.

Sua dll, inicialize-a emDLL_PROCESS_ATTACH: será suficiente ligar do programa mql?
Pensei que era possível trabalhar com as funções WinAPI sem problemas, e a dll fechada deve ser inicializada adicionalmente,
LoadLibraryW("MyDll.dll");