Ошибки, баги, вопросы - страница 2778

 
Renat Fatkhullin :

Работа (Get/Set методы) с чартом у MQL5 программ идет через транзакционную очередь.

Это позволяет развязать работу GUI и самого терминала от неминуемых блокировок, которые устраивали(устраивают) бы MQL5 программы.

Транзакционная асинхронность позволяет массово быстро писать или читать в разделенных режимах и мгновенно включает режим синхронизации при смешении Set и Get методов.

То есть, лучше 1000 раз сделать асинхронные Set, а потом 1000 раз Get вместо того, чтобы делать поочередные Get & Set, превращая очередь в синхронный процесс. Потому что надо удостовериться, что предыдущий асинхронный Set точно наложился и теперь можно его читать.


Нужно аккуратно пользоваться системными функциями и кешировать их по возможности.

Это понятная и хорошая система. Но я думаю, что где-то есть сбой, что также продемонстрировал @Sergey Dzyubli.
Sergey Dzyublik
Sergey Dzyublik
  • www.mql5.com
Добавил тему Вход через MQL5.community (OAuth) В настройках профиля появилась новая вкладка Приложения (https://www.mql5.com/ru/users/USER_NAME/apps): Эта функция позволяет людям авторизоваться на вашем сайте или в приложении, используя аккаунт MQL5.community. Технология проста и безопасна. Она Добавил...
 
Alexey Navoykov:
Насколько я знаю, вызов ChartRedraw не приводит к немедленной перерисовке графика.  Перерисовка происходит только при вызове какого-нибудь Get-метода.
А ChartRedraw по сути такой же асинхронный метод.  Так что ваш замер BuildChart не достоверен.

попробуйте поменяйте эти две строчки местами

тогда не будет ничего асинхронного в замере и посмотрите что будет. Будет еще быстрее.

 
fxsaber:
Долго тупил, не понимая, что не нравится в этой строке компилятору.

Забыл if написать. Подумал, что для таких тупняков хорошо бы разжевать сообщение.

просил сделать описание и пример для всех ошибок и предупреждений компилятора еще лет 5 назад, может больше.

может быть у вас получится лучше.

 
Renat Fatkhullin:

Работа (Get/Set методы) с чартом у MQL5 программ идет через транзакционную очередь.

Это позволяет развязать работу GUI и самого терминала от неминуемых блокировок, которые устраивали(устраивают) бы MQL5 программы.

Транзакционная асинхронность позволяет массово быстро писать или читать в разделенных режимах и мгновенно включает режим синхронизации при смешении Set и Get методов.

То есть, лучше 1000 раз сделать асинхронные Set, а потом 1000 раз Get вместо того, чтобы делать поочередные Get & Set, превращая очередь в синхронный процесс. Потому что надо удостовериться, что предыдущий асинхронный Set точно наложился и теперь можно его читать.


Нужно аккуратно пользоваться системными функциями и кешировать их по возможности.

Я правильно понимаю, что асинхронными являются не только Set методы, но и Get? 
Т.е. Ильяс тут  был не прав?
При этом Слава здесь был прав, когда говорил о асинхронности метода ChartXYToTimePrice? Ведь метод ChartXYToTimePrice относится скорей всего к Get методам.

В документации  про асинхронность говорится только про Set методы.

 
Nikolai Semko:

Я правильно понимаю, что асинхронными являются не только Set методы, но и Get? 

Вам уже отвечали на данный вопрос, но с ваших слов "академические повествования" вам не нужны...
Ви там определитесь или как?

 
Sergey Dzyublik:

Вам уже отвечали на данный вопрос, но с ваших слов "академические повествования" вам не нужны...
Ви там определитесь или как?

Я этого не говорил и не имел этого ввиду.
Я учусь и пытаюсь разобраться. Я пытаюсь практику состыковать с теорией.
Из сообщения Рената я понял, что и Set, и Get методы стоят в транзакционной очереди. А стало быть по сути асинхронные. Я не правильно понял?

Во всяком случае я давно заметил асинхронное поведение Get функций и толкую об этом уже больше двух лет.

 
Nikolai Semko:

При этом Слава здесь был прав, когда говорил о асинхронности метода ChartXYToTimePrice? Ведь метод ChartXYToTimePrice относится скорей всего к Get методам.

Если вы не понимаете сути того, о чем повествуете, то не нужно додумывать то, о чем вам не говорили.

 
Sergey Dzyublik:

Если вы не понимаете сути того, о чем повествуете, то не нужно додумывать то, о чем вам не говорили.

я везде спрашиваю. У меня стоит знак вопроса.
Еще раз говорю - я хочу разобраться. Эта ветка называется ".... вопросы"
Эко я зацепил Ваше ЭГО :))

 
Nikolai Semko:

я везде спрашиваю. У меня стоит знак вопроса.
Еще раз говорю - я хочу разобраться. Эта ветка называется ".... вопросы"

Как я понял - Get синхронные, т.к. возвращают запрошенный результат. Но если в очереди есть асинхронные Set, то с ними приходится синхронизироваться.

Если в очереди только Get-ы, то задержек нет.

 
Nikolai Semko:

я везде спрашиваю. У меня стоит знак вопроса.
Еще раз говорю - я хочу разобраться. Эта ветка называется ".... вопросы"

Ваш вопрос некорректный, так как в нем содержится утверждение того, о чем не повествовалось:

При этом Слава здесь был прав, когда говорил о асинхронности метода ChartXYToTimePrice? Ведь метод ChartXYToTimePrice относится скорей всего к Get методам.


Напомнило из "Карлсона":

— Я сказала, отвечай — да или нет! На простой вопрос всегда можно ответить «да» или «нет», по-моему, это не трудно! — завопила фрекен Бок.
— Представь себе, трудно, — вмешался Карлсон.
— Я сейчас задам тебе простой вопрос, и ты сама в этом убедишься. Вот, слушай! Ты перестала пить коньяк по утрам, отвечай — да или нет?
У фрекен Бок перехватило дыхание, казалось, она вот-вот упадет без чувств. Она хотела что-то сказать, но не могла вымолвить ни слова.

— Ну вот вам, — сказал Карлсон с торжеством.
— Повторяю свой вопрос: ты перестала пить коньяк по утрам?