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

 
Andrey Barinov:
...

O que pode ser encontrado a olho nu em uma tabela de 1000 fileiras por rolagem? Qual problema está sendo resolvido?

P.S. Offtopic novamente...

Andrew, a tarefa era permitir que o usuário criasse qualquer mesa. Como em Sharp. Nunca se sabe o que ele pode ter em mente...)).

Sugiro que terminemos o offtopic)).


Para ser justo, você só pode redesenhar a parte visível da mesa, e só pode redesenhar a parte invisível em um evento com scroll. Mas novamente, este foi um teste de estresse.


Tudo depende de como exatamente os valores na tabela estão mudando. Se os valores mudam muito rápida e constantemente, então é melhor redesenhar apenas a área visível, e redesenhar o invisível durante a rolagem. Se os valores estão mudando com pouca freqüência, é melhor redesenhar tudo de uma só vez, de modo que no momento do início da rolagem não haja atraso por causa do redesenho. Como você nunca sabe exatamente com que freqüência os valores na tabela mudarão, escolhi um método universal - redesenhar tudo de uma só vez. Você não vê muitas mesas com valores pulando como loucos, então é melhor redesenhá-las todas de uma só vez. Portanto, é melhor redesenhar toda a tela de uma vez e contornar o atraso no início da rolagem.

SZY. Você viu quanto tempo leva para redesenhar uma tela de 900*7000 pixels? Mesmo com o MT5, este atraso pode chegar a centenas de milissegundos. É muito desagradável obter tal atraso quando se começa a rolagem. Portanto, se a freqüência do redesenho for baixa, é melhor desenhar tudo de uma só vez.

Voltando ao tema - esta é uma das razões para a necessidade de multithreading no MT5!)


Uma última coisa. A fim de evitar problemas com a sobrecarga do processador quando muitas vezes redesenho mesas grandes, escolhi outro caminho. Eu fiz um regulador especial para ajustar a velocidade de mudança de valores. Ou seja, os valores mudam rapidamente, mas o usuário regula a velocidade de sua saída (redesenho) com o controle deslizante (eu o mostrei). Assim, a carga sobre o processador é reduzida às vezes e o usuário é mais conveniente para perceber as informações da tabela.

 
Реter Konow:

Andrei, a tarefa era permitir que o usuário criasse qualquer mesa. Assim como em Sharp. Nunca se sabe o que lhe vai na cabeça...))

Eu sugiro terminar o tópico)).


Para ser justo, você pode redesenhar apenas a parte visível da mesa, você pode redesenhar a parte invisível apenas em um evento com scroll. Mas novamente, foi um teste de estresse.


SZY. Tudo depende de como exatamente os valores na tabela mudam. Se os valores mudam muito rápida e constantemente, então é melhor redesenhar apenas a área visível, e redesenhar o invisível durante a rolagem. Se os valores estão mudando com pouca freqüência, é melhor redesenhar tudo de uma só vez, de modo que no momento do início da rolagem não haja atraso por causa do redesenho. Como você nunca sabe exatamente com que freqüência os valores na tabela mudarão, escolhi um método universal - redesenhar tudo de uma só vez. Você não vê muitas mesas com valores pulando como loucos, então é melhor redesenhá-las todas de uma só vez. Portanto, é melhor redesenhar toda a tela de uma vez e contornar o atraso no início da rolagem.

SZY. Você viu quanto tempo leva para redesenhar uma tela de 900*7000 pixels? Mesmo com o MT5, este atraso pode chegar a centenas de milissegundos. É muito desagradável obter tal atraso quando se começa a rolagem. Portanto, se a freqüência do redesenho for baixa, é melhor desenhar tudo de uma só vez.

Voltando ao tema - esta é uma das razões da necessidade de multithreading no MT5!)


Uma última coisa. A fim de evitar problemas com a sobrecarga do processador quando muitas vezes redesenho mesas grandes, escolhi outro caminho. Eu fiz um regulador especial para ajustar a velocidade de mudança de valores. Ou seja, os valores mudam rapidamente, mas o usuário regula a velocidade de sua saída (redesenho) com o controle deslizante (eu o mostrei). Assim, a carga sobre o processador é reduzida às vezes e o usuário é mais conveniente para perceber as informações da tabela.

Peter, você entende a diferença entre assíncronia, multithreading e paralelismo?

 
Sergey Chalyshev:

Peter, você entende a diferença entre assíncronia, multithreading e paralelismo?

Sugiro que você dê um exemplo de operação assíncrona ou paralela em uma única linha.
 
Реter Konow:
Sugiro dar um exemplo de operação assíncrona ou paralela na mesma linha.

OK, vamos a isso!

 
Sergey Chalyshev:

OK, vamos a isso!

Eu não conheço nenhum.

O fluxo oferece apenas uma seqüência, e é difícil ser paralelo dentro de uma seqüência estreita. Só se pode ser assíncrono dentro de uma seqüência especulativa, olhando para trás para as rotundas anteriores e observando novas reviravoltas na rota antiga, pensando orgulhosamente que se está seguindo um novo caminho...

Entenda que os limites da rosca única não podem ser superados pela engenhosidade de um codificador autoconfiante que acredita que inúmeras linhas paralelas podem passar por um único ponto. Esta geometria não euclidiana não se encaixa nas realidades do programa e não acrescenta assíncronia aos processos dentro da rosca.
 
Sergey Chalyshev:

OK, vamos a isso!

Palmas com uma mão? Zen para fora não é Zen :-)

Bem, você sabe que Peter fica fora da caixa de areia. Ele basicamente não consegue entender os termos.

de que adianta fazer perguntas como essa? bem, ele vai começar a tagarelar como um repórter profissional

 
Maxim Kuznetsov:

Palmas com uma mão? Zen para o exterior não é zen :-)

Bem, você sabe que Peter fica fora da caixa de areia. Ele basicamente não consegue entender os termos.

de que adianta fazer perguntas como essa? bem, ele vai começar a tagarelar como um repórter profissional

Por que ele flubularia? Estou rindo. Bem, então me dê um exemplo de assíncrono de rosca única com paralelismo. Se for outra coisa que não seja autodestruição, eu admito que estou errado.
 
Rapazes, bem, lógica elementar. Bem, como fazer algo assíncrono em um único fio, pulando sobre uma única seqüência de ações? A única maneira é mover-se em círculo e a cada iteração tomar uma decisão sobre quais operações realizar e quais adiar. Mas será assíncrono normal? Não devemos de forma alguma falar de paralelismo. Que tipo de paralelismo podemos ter em um só fio? ))

Dois fios - duas seqüências de ação separadas, assíncronas uma à outra.
 
Реter Konow:
Bem, pessoal, é uma lógica elementar. Bem, como se pode fazer algo assíncrono, pulando sobre uma única seqüência de operações? A única maneira é mover-se em círculo e a cada iteração tomar uma decisão, quais as operações a serem realizadas e quais as que devem ser adiadas. Mas será assíncrono normal? Não devemos de forma alguma falar de paralelismo. Que tipo de paralelismo podemos ter em um só fio? ))

Dois fios são duas seqüências de ação separadas, assíncronas uma à outra.

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

 
Реter Konow:
Rapazes, bem, lógica elementar. Bem, como fazer algo assíncrono em um único fio, pulando sobre uma única seqüência de ações? A única maneira é mover-se em círculo e a cada iteração tomar uma decisão sobre quais operações realizar e quais adiar. Mas será assíncrono normal? Não devemos de forma alguma falar de paralelismo. Que tipo de paralelismo podemos ter em um só fio? ))

Os dois fios são duas seqüências de ação separadas, assíncronas uma à outra.

Uma chamada assíncrona não cria necessariamente um novo fio