Temporizador - página 6

 
Yurich:
Uma interrupção é quando o OnTick está a ser executado e um evento mais importante, como o OnTimer, chegou. OnTick é pausado, o código OnTimer é executado, depois OnTick continua a correr novamente.
Oh meu Deus. Este é um sonho terrível.
 
pusheax:

OnTimer, OnTick, OnTrade... Estas são as interrupções.

Foi o que eu pensei no início. Mas existem variantes. Por exemplo, não podemos marcar algum OnTimer com a palavra interrupções e saber que será chamado precisamente no momento da ocorrência do evento, interrompendo o processamento de quaisquer outros eventos (o esquema MSDOS de linha única - armazenar pilha, lidar com interrupções, recuperar pilha, passar o controlo). Tal esquema poderia resolver muitos problemas usando métodos mais simples. Por exemplo, o OnTick chamado por este esquema parece bastante agradável. Há aqui subtilezas - será necessário processar entradas repetidas (por exemplo, duas carraças com uma pequena lacuna), mas é solvível em geral.
 
TheXpert:
Que diabo. Isto é um pesadelo.
Na realidade Yurich descreveu interrupções no sentido clássico, não OnTick, OnTimer interrupt handling
 
Por exemplo, se alguém põe Sleep(100000) no manipulador OnTick; então agoraOnTimer, OnTrade não tem vida nenhuma?
 
TheXpert:
Que chatice. Sim, é um sonho assustador.

Não, não é assustador. Existem esquemas antigos experimentados e testados sobre como evitar as franjas.

Mas continua a ser um sonho. Não acredito que os criadores o façam. Embora os benefícios sejam inegáveis.

Eu, por exemplo, poderia fazer cálculos de fundo no OnTimer, com uma pequena frequência (cerca de uma vez em 5 segundos) de duração de meio período de tempo. E não haveria necessidade de se preocupar em manusear carraças, o que poderia apenas interromper o cálculo de fundo, e depois devolvê-lo correctamente ao seu devido lugar. E agora é mais fácil colocá-lo num gráfico separado do que processá-lo correctamente no mesmo fio em que as carraças estão a fazer carraças. Embora houvesse tempo suficiente para todos eles no mesmo fio.

 
pusheax:
Por exemplo, se alguém definir Sleep(100000); no manipulador OnTick, será queOnTimer e OnTrade não têm vida alguma?

o evento comercial permanecerá na fila de espera e será tratado

Não confundir Tick, Comércio, Eventos Temporizadores e seus manipuladores OnTick, OnTrade, OnTimer

 
pusheax:
Por exemplo, se alguém definir Sleep(100000); em OnTick handler, o que será queOnTimer, OnTrade não terá vida alguma?
Neste momento é exactamente o que é. Mas o suicídio não é uma coisa difícil. É pior, quando há uma caixa de mensagens no meu ecrã, e eu estou a beber chá na cozinha. Yurich faz uma boa observação.
 
stringo:
Na realidade Yurich descreveu interrupção no sentido clássico, não OnTick, OnTimer interrupt handling.

Compreendo o que ele descreveu.

Para sincronizar dados e perturbar o acesso numa aplicação com uma única rosca é a altura da idiotice.

 
MetaDriver:
É assim que as coisas são neste momento. Mas o suicídio não é difícil. É pior quando há uma caixa de mensagens no ecrã e eu estou na cozinha a beber chá. Yurich faz uma boa observação.
Ah, agora percebo, o evento Temporizador em si vai acontecer, mas o seu tratamento OnTimer será adiado até que o OnTick termine.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
pusheax:
É provavelmente assim que funciona.
Se ao menos :)