Temporizador - página 6

 
Yurich:
Una interrupción es cuando se está ejecutando OnTick y ha llegado un evento más importante, como OnTimer. OnTick se pone en pausa, se ejecuta el código de OnTimer y luego OnTick continúa ejecutándose de nuevo.
Oh, Dios. Este es un sueño terrible.
 
pusheax:

OnTimer, OnTick, OnTrade... Estas son las interrupciones.

Eso es lo que pensé al principio. Pero hay variantes. Por ejemplo, no podemos marcar algún OnTimer con la palabra interrupciones y saber que será llamado precisamente en el momento de la ocurrencia del evento interrumpiendo el procesamiento de cualquier otro evento (de acuerdo con el esquema de un solo hilo de MSDOS - guardar la pila, manejar las interrupciones, recuperar la pila, pasar el control). Este esquema podría resolver muchos problemas utilizando métodos más simples. Por ejemplo, OnTick llamado por este esquema se ve bastante bien. Hay sutilezas en este caso: será necesario procesar entradas repetidas (por ejemplo, dos ticks con un pequeño intervalo), pero es solucionable en general.
 
TheXpert:
Maldita sea. Esto es un mal sueño.
En realidad Yurich describió las interrupciones en sentido clásico, no el manejo de interrupciones OnTick, OnTimer
 
Por ejemplo, si alguien pone Sleep(100000) en el manejador OnTick; ¿entonces ahoraOnTimer, OnTrade no tienen vida alguna?
 
TheXpert:
Qué pena. Sí, es un sueño aterrador.

No, no da miedo. Hay esquemas antiguos y probados sobre cómo evitar el flequillo.

Pero sigue siendo un sueño. No creo que los desarrolladores lo hagan. Aunque los beneficios son innegables.

Yo, por ejemplo, podría ejecutar los cálculos de fondo en OnTimer, con una pequeña frecuencia (alrededor de una vez en 5 seg) la duración de la mitad del período del temporizador. Y no habría que preocuparse por el manejo de los ticks, que simplemente podrían interrumpir el cálculo en segundo plano, y luego devolverlo correctamente a su lugar. Y ahora es más fácil ponerlo en un gráfico aparte que procesarlo correctamente en el mismo hilo en el que están los ticks. Aunque habría tiempo suficiente para todos ellos en el mismo hilo.

 
pusheax:
Por ejemplo, si alguien pone Sleep(100000); en el manejador OnTick, ¿elOnTimer y el OnTrade no tienen vida alguna?

eventos del temporizador, y los nuevos ticks serán ignorados. el evento de comercio permanecerá en la cola y será manejado

No confunda los eventos Tick, Trade, Timer y sus manejadores OnTick, OnTrade, OnTimer

 
pusheax:
Por ejemplo, si alguien pone Sleep(100000); en el manejador OnTick, ¿que no tendrá vidaOnTimer, OnTrade?
Ahora mismo es exactamente eso. Pero el suicidio no es algo difícil. Es peor, cuando hay un cuadro de mensajes en mi pantalla, y estoy bebiendo té en la cocina. Yurich hace una buena observación.
 
stringo:
En realidad Yurich describió una interrupción en el sentido clásico, no el manejo de interrupciones OnTick, OnTimer.

Entiendo lo que ha descrito.

Sincronizar los datos e interrumpir el acceso en una aplicación de un solo hilo es el colmo de la idiotez.

 
MetaDriver:
Así son las cosas en este momento. Pero el suicidio no es difícil. Es peor cuando hay un cuadro de mensajes en la pantalla y estoy en la cocina bebiendo té. Yurich hace una buena observación.
Ah, ahora lo entiendo, el evento Timer en sí ocurrirá pero su manejo OnTimer se retrasará hasta que OnTick se complete.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
pusheax:
Probablemente así es como funciona.
Ojalá :)