Использование переменных при выполнение программы - страница 2

 
EfremovSergey:


Допустим произошло событие таймера и запустился обработчик OnTimer, он объявил что переменная i=12.

Следом запустился обработчик OnTick и объявил что переменная i=0.

Далее OnTimer подставляет переменную i в некую функцию, рассчитывая на то, что i=12, но по той причине, что OnTick уже успел переобъявить i=0 произойдёт баг, вместо 12 будет 0.

Тело функций OnTimer и OnTick выполняются параллельно, независимо друг от друга, то есть лучше для каждого типа обработчика иметь свой набор переменных, чтобы они не пересекались или есть какой-то принцип, который позволяет избежать путаницы при обращении к переменным из разных обработчиков при их параллельной работе?

А просто флаг использовать никак? 

 
Igor Makanu:

в MQL-программах нет буферизации или очереди событий

Есть, но не для всех событий.

 
Алексей Тарабанов:

А просто флаг использовать никак? 

Флаг для каких целей? Вроде выяснили, что OnTimer и OnTick одновременно не функционируют... Без нашего какого-либо участия существует программный флаг - пока исполняется одно другое не исполняется и наоборот. Что именно вы подразумеваете под флагом?