Programación asíncrona y multihilo en MQL - página 39

 
Andrey Barinov:
...

¿Qué se puede encontrar a ojo en una tabla de 1000 filas desplazándose? ¿Qué problema se resuelve?

P.D. Offtopic de nuevo...

Andrew, la tarea consistía en permitir al usuario crear cualquier tabla. Como en Sharp. Nunca se sabe lo que puede tener en mente...)).

Sugiero que terminemos el offtopic)).


Para ser justos, sólo puedes redibujar la parte visible de la tabla, y sólo redibujar la parte invisible en un evento de desplazamiento. Pero, de nuevo, esto fue una prueba de estrés.


Todo depende de cómo cambien exactamente los valores de la tabla. Si los valores cambian muy rápida y constantemente, entonces es mejor redibujar sólo el área visible, y redibujar la invisible durante el desplazamiento. Si los valores cambian con poca frecuencia, es mejor redibujarlos todos a la vez, para que en el momento de iniciar el desplazamiento no haya retraso debido al redibujado. Como nunca se sabe con exactitud la frecuencia con la que cambiarán los valores de la tabla, he optado por un método universal: redibujarlos todos a la vez. No se ven demasiadas tablas con valores saltando como locos, así que es mejor redibujarlas todas a la vez. Por lo tanto, es mejor redibujar todo el lienzo a la vez y evitar el retraso al principio del desplazamiento.

SZY. ¿Has visto lo que se tarda en redibujar un lienzo de 900*7000 píxeles? Incluso con MT5, este retraso puede alcanzar cientos de milisegundos. Es muy desagradable obtener ese retraso cuando se empieza a desplazar. Por lo tanto, si la frecuencia de redibujado es baja, es mejor dibujar todo de una vez.

Volviendo al tema - ¡esta es una de las razones de la necesidad de multihilo en MT5!)


Una última cosa. Para evitar el problema de la sobrecarga del procesador cuando se redibujan con demasiada frecuencia las tablas grandes, he optado por otra vía. Hice un regulador especial para ajustar la velocidad de cambio de valores. Es decir, los valores cambian rápidamente, pero el usuario regula la velocidad de su salida (redibujado) con el deslizador (lo mostré). De este modo, la carga del procesador se reduce en ocasiones y el usuario percibe más cómodamente la información de la tabla.

 
Реter Konow:

Andrei, la tarea era permitir al usuario crear cualquier tabla. Como en Sharp. Nunca se sabe lo que se le va a meter en la cabeza...))

Sugiero terminar el offtopic)).


Para ser justos, sólo puedes redibujar la parte visible de la tabla, puedes redibujar la parte invisible sólo en un evento de desplazamiento. Pero de nuevo, era una prueba de estrés.


SZY. Todo depende de cómo cambien exactamente los valores de la tabla. Si los valores cambian muy rápida y constantemente, entonces es mejor redibujar sólo el área visible, y redibujar la invisible durante el desplazamiento. Si los valores cambian con poca frecuencia, es mejor redibujarlos todos a la vez, para que en el momento de iniciar el desplazamiento no haya retraso debido al redibujado. Como nunca se sabe con exactitud la frecuencia con la que cambiarán los valores de la tabla, he optado por un método universal: redibujarlos todos a la vez. No se ven demasiadas tablas con valores saltando como locos, así que es mejor redibujarlas todas a la vez. Por lo tanto, es mejor redibujar todo el lienzo a la vez y evitar el retraso al principio del desplazamiento.

SZY. ¿Has visto lo que se tarda en redibujar un lienzo de 900*7000 píxeles? Incluso con MT5, este retraso puede alcanzar cientos de milisegundos. Es muy desagradable obtener ese retraso cuando se empieza a desplazar. Por lo tanto, si la frecuencia de redibujado es baja, es mejor dibujar todo de una vez.

Volviendo al tema - ¡esta es una de las razones de la necesidad del multithreading en MT5!)


Una última cosa. Para evitar el problema de la sobrecarga del procesador cuando se redibujan con demasiada frecuencia las tablas grandes, he optado por otra vía. Hice un regulador especial para ajustar la velocidad de cambio de valores. Es decir, los valores cambian rápidamente, pero el usuario regula la velocidad de su salida (redibujado) con el deslizador (lo mostré). De este modo, la carga del procesador se reduce en ocasiones y el usuario percibe más cómodamente la información de la tabla.

Peter, ¿entiendes la diferencia entre asincronía, multihilo y paralelismo?

 
Sergey Chalyshev:

Peter, ¿entiendes la diferencia entre asincronía, multihilo y paralelismo?

Te sugiero que des un ejemplo de operación asíncrona o paralela en un solo hilo.
 
Реter Konow:
Sugiero dar un ejemplo de funcionamiento asíncrono o paralelo en el mismo hilo.

Bien, ¡dale caña!

 
Sergey Chalyshev:

Vale, ¡dale caña!

No conozco ninguno.

El flujo sólo ofrece una secuencia, y es difícil ser paralelo dentro de una secuencia estrecha. Uno sólo puede ser asíncrono dentro de una secuencia de forma especulativa, mirando hacia atrás en sus pases de ronda anteriores y notando nuevos giros en la vieja ruta, pensando orgullosamente que está siguiendo un nuevo camino...

Entiéndase, los límites del hilo único no pueden ser superados por la ingenuidad de un codificador seguro de sí mismo que cree que innumerables líneas paralelas pueden pasar por un solo punto. Esta geometría no euclidiana no se ajusta a las realidades del programa y no añade asincronía a los procesos dentro del hilo.
 
Sergey Chalyshev:

Bien, ¡dale caña!

¿Aplaudir con una sola mano? El zen hacia fuera no es zen :-)

Bien sabes que Peter se mantiene fuera de la caja de arena. Básicamente no puede entender los términos.

¿Qué sentido tiene hacer preguntas así? Pues que va a empezar a cotorrear como un reportero profesional

 
Maxim Kuznetsov:

¿Aplaudir con una mano y con la otra? El zen hacia fuera no es zen :-)

Bien sabes que Peter se mantiene fuera de la caja de arena. Básicamente no puede entender los términos.

¿Qué sentido tiene hacer preguntas así? Pues que va a empezar a cotorrear como un reportero profesional

¿Por qué iba a fallar? Me estoy riendo. Bueno, entonces dame un ejemplo de asincronía de un solo hilo con paralelismo. Si es algo que no es autodestructivo, admito que estoy equivocado.
 
Chicos, bueno, lógica elemental. Bien, ¿cómo hacer algo asíncrono en un hilo, saltando sobre una única secuencia de acciones? La única manera es moverse en círculo y en cada iteración tomar la decisión de qué operaciones realizar y cuáles posponer. ¿Pero es una asincronía normal? No deberíamos hablar de paralelismo en absoluto. ¿Qué tipo de paralelismo podemos tener en un hilo? ))

Dos hilos - dos secuencias de acción separadas, asíncronas entre sí.
 
Реter Konow:
Bueno, chicos, es lógica elemental. Pues bien, ¿cómo puede un hilo hacer algo asíncrono, saltando sobre una única secuencia de operaciones? La única manera es moverse en círculo y en cada iteración tomar la decisión de qué operaciones realizar y cuáles posponer. ¿Pero es una asincronía normal? No deberíamos hablar de paralelismo en absoluto. ¿Qué tipo de paralelismo podemos tener en un hilo? ))

Dos hilos son dos secuencias de acción separadas, asíncronas entre sí.

Dos o veintidós hilos pueden ser síncronos o asíncronos. Un mismo hilo puede incluir tanto operaciones síncronas como asíncronas. Usted ha indicado cómo. El paralelo no sabe cómo incluir los paralelos.

 
Реter Konow:
Chicos, bueno, lógica elemental. Bien, ¿cómo hacer algo asíncrono en un hilo, saltando sobre una única secuencia de acciones? La única manera es moverse en círculo y en cada iteración tomar la decisión de qué operaciones realizar y cuáles posponer. ¿Pero es una asincronía normal? No deberíamos hablar de paralelismo en absoluto. ¿Qué tipo de paralelismo podemos tener en un hilo? ))

Los dos hilos son dos secuencias de acción separadas, asíncronas entre sí.

Una llamada asíncrona no crea necesariamente un nuevo hilo

Razón de la queja: