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

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

Dois, ou vinte e dois fios podem ser síncronos ou assíncronos. Uma linha pode incluir tanto operações síncronas quanto assíncronas. Você indicou como. O Paralelo não sabe como incluir os paralelos.

Bem, sim. Você não pode incluir cálculos paralelos em uma única linha. As operações síncronas e assíncronas podem ser realizadas em uma ou mais roscas. Somente a assíncronia de rosca única é essencialmente uma seqüência otimizada de operações que é inferior em estabilidade à assíncronia de rosca múltipla. Se uma rosca falhar, o sistema continuará operando e as operações do processo parado podem ser dissociadas em outras roscas preservando a capacidade de serviço. Se houver apenas um fio, o sistema é kaput).

Divisão aleatória por zero em um fio e pronto.
 

Exemplo: há uma função síncrona rodando na linha 1 e aguardando os dados das linhas 2, 3 e 4, enquanto as funções distribuídas nas linhas 5, 6, 7 e 8 estão aguardando os resultados.

Todos de pé e à espera do resultado. Agora, preste atenção: e se a função síncrona estiver esperando por dados de seu fio? E, Deus nos livre, esses dados dependem de seu resultado?

 
Реter Konow:

Divisão aleatória por zero em um fio e pronto.

Não, isso não é tudo.

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

Exemplo: há uma função síncrona rodando na linha 1 e aguardando os dados das linhas 2, 3 e 4, enquanto as funções distribuídas nas linhas 5, 6, 7 e 8 estão aguardando os resultados.

Todos de pé e à espera do resultado. Agora, preste atenção: e se a função síncrona estiver esperando por dados de seu fio? E Deus nos livre, estes dados dependem de seu resultado?

Ok, eu mesmo responderei:

A lona começará a piscar.

 
Koldun Zloy:

Vou traduzir o que já lhe foi dito por um representante da empresa de desenvolvimento MT:

Não é possível criar roscas a partir da MQL. Nem mesmo com o WinAPI.

Você só pode fazer isso escrevendo sua própria DLL.


Você pode, MQL5\IncluirWinAPI\processthreadssthreadsapi.mqh tem uma embalagem
HANDLE CreateThread(PVOID thread_attributes,ulong stack_size,PVOID start_address,PVOID parameter,uint create_flags,uint &thread_id);

Mas o que fazer com as pistas através da MQL? É por isso que eles escreveram que temos que criar uma DLL e trabalhar com eles lá.


 

Alexei Tarabanov:

Exemplo: há uma função síncrona rodando na linha 1 e aguardando os dados das linhas 2, 3 e 4, enquanto as funções distribuídas nas linhas 5, 6, 7 e 8 estão aguardando os resultados.

Todos de pé e à espera do resultado. Agora, preste atenção: e se a função síncrona estiver esperando por dados de seu fio? E Deus nos livre, estes dados dependem de seu resultado?

Alexei Tarabanov:

Ok, eu mesmo responderei:

A lona começará a piscar.

Destacado não tem significado.

Sobre as outras faixas, até que os dados estejam prontos, aguardarão. Nada vai pestanejar.