Очереди событий. Особенности

 

Из Справочника: "Каждая mql5-программа и каждый график имеют свою собственную очередь событий, куда складываются все вновь поступающие события. Программа получает события только от графика, на котором она запущена".

Применительно к пользовательским  событиям это означает, что:

1) сначала функция EventChartCustom() генерирует пользовательское  событие для определённого графика;

2) затем сгенерированное пользовательское  событие попадает в очередь событий этого графика;

3) затем это пользовательское  событие попадает из очереди событий графика в очередь событий mql5-программы, прикреплённой к этому графику.

Указаны два исключения:

а) "если в очереди mql5-программы уже находится событие ChartEvent или такое событие обрабатывается, то новое событие такого типа не ставится в очередь";

б) "переполнение очереди для корректно написанной программы маловероятно. При переполнении очереди новые события отбрасываются без постановки в очередь".

При этом оба исключения, судя по тексту, касаются собственной очереди событий mql5-программы, а не собственной очереди событий графика. Поэтому два вопроса:

А. Если новое пользовательское  событие не ставится в собственную очередь событий mql5-программы, то что происходит с этим событием на уровне собственной очереди событий графика? Остаётся ли это событие в собственной очереди событий графика "до лучших времен", или же оно удаляется из собственной очереди событий графика немедленно и безвозвратно?

Б. Что происходит при переполнении собственной очереди событий графика, а не mql5-программы? Отбрасываются ли новые события при переполнении собственной очереди событий графика, или же действует иной механизм?

 
Yedelkin:

А. Если новое пользовательское  событие не ставится в собственную очередь событий mql5-программы, то что происходит с этим событием на уровне собственной очереди событий графика? Остаётся ли это событие в собственной очереди событий графика "до лучших времен", или же оно удаляется из собственной очереди событий графика немедленно и безвозвратно?

Элемент очереди взятый на обработку удаляется из очереди безвозвратно.

Б. Что происходит при переполнении собственной очереди событий графика, а не mql5-программы? Отбрасываются ли новые события при переполнении собственной очереди событий графика, или же действует иной механизм?

Механизм одинаковый. При переполнении любой очереди отбрасываются новые элементы.
 

antt: Механизм одинаковый. При переполнении любой очереди отбрасываются новые элементы.

ОК, здесь всё понятно.

antt:

А. Если новое пользовательское событие не ставится в собственную очередь событий mql5-программы, то что происходит с этим событием на уровне собственной очереди событий графика? Остаётся ли это событие в собственной очереди событий графика "до лучших времен", или же оно удаляется из собственной очереди событий графика немедленно и безвозвратно?

Элемент очереди взятый на обработку удаляется из очереди безвозвратно.

 Т.е. элемент очереди событий графика, переданный в очередь событий  mql5-программы, удаляется из очереди событий графика независимо от того, будет ли он поставлен в очередь событий mql5-программы? Правильно? 

 
Yedelkin:

 Т.е. элемент очереди событий графика, переданный в очередь событий  mql5-программы, удаляется из очереди событий графика независимо от того, будет ли он поставлен в очередь событий mql5-программы? Правильно? 

Да. Событие безусловно забирается из очереди чарта и ставится в очереди эксперта и индикаторов.
 

Теперь более-менее понятно. Благодарю!

Ещё вопрос. В разделе Справочник MQL5 / Работа с событиями / EventChartCustom есть такая фраза:

"Возвращаемое значение. Возвращает true в случае удачной постановки пользовательского события в очередь сообщений". 

Ранее говорилось, что существуют такие виды очередей, как очередь событий графика и очередь событий mql5-программы. А что такое "очередь сообщений"? Это новый вид очереди, предшествующий очереди событий графика, или же под "очередью событий" подразумевается непосредственно очередь событий графика-получателя события?

 
Yedelkin:

Ещё вопрос. В разделе Справочник MQL5 / Работа с событиями / EventChartCustom есть такая фраза:

Ранее говорилось, что существуют такие виды очередей, как очередь событий графика и очередь событий mql5-программы. А что такое "очередь сообщений"? Это новый вид очереди, предшествующий очереди событий графика, или же под "очередью событий" подразумевается непосредственно очередь событий графика-получателя события?

Ошибка в справочнике. Подразумевается очередь событий графика-получателя события.
 
antt:
Ошибка в справочнике. Подразумевается очередь событий графика-получателя события.
ОК, всё понятно.