TGB (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 След.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
А Вы это пробовали когда-нибудь РЕАЛЬНО это сделать?
 Я это реально делал и не один раз.

Цитата
Владимир написал:
ОГРОМНЫЙ опыт!
 Кто-то сказал, из великих (цитата не точная): «ОГРОМНЫЙ опыт – это тяжелый груз»  :smile:

Цитата
Владимир написал:
Насчёт таблицы смежности я прав?
 Я думаю, что вы не правы. Но вы можете считать, что правы  :smile: . Ну и ладно. Каждый из нас, наверное, может иметь свое (особое) мнение и это нормально.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
Но даже без этого Ваша схема не будет работать НИКОГДА!
 Заявление сильное. Но, конечно, вы так можете думать  :smile: .
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
дерево-то можно, а вот граф произвольного вида - уже нельзя
   С этим не согласен. Можно.
   Пакет сереализации, предложенный мною  в данной ветке ранее, упаковывает в строку (распаковывает) таблицу Lua произвольной структуры (деревья, сети, цикличесие графы и т.д.).
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
TGB написал:
И вот это всё Вы предлагаете запихивать В СТРОКУ?
  Собственно, ваши проблемы вам и решать.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
Каких ещё "строк"? У меня же там деревья!
 В виде строки можно представить любое дерево
Цитата
TGB написал:
в виде сереализованной таблицы Lua
 Где проблемы?
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
таблица по тикерам и есть меню.  А дочерние уже содержат информацию по выбранному тикеру. Но, поскольку она бывает довольно объёмная, неплохо было бы иметь и дочерние уже от него (например, по сделкам, по свечам
  А пусть дочерние (в виде строк) содержат всю необходимую вам информацию по выбранному тикеру в виде сереализованной таблицы Lua. При этом нет никаких ограничений и без использования дочерних уже от него.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
у меня это «дерево» меню содержит несколько сотен веток от корня (думаю, вскоре дойдёт до пары тысяч) и время от времени хочется нарастить его до 3-го уровня, причём с редактируемыми элементами.
 Интересно, что вы делаете с тысячами командами. Вы что, тетрикс реализовали :smile:
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
Я свято убеждён: "нормальные средства создания диалога" предполагают возможность программирования в событиях - все остальные способы ненормальные. А здесь даже и слова такого нет.
 Ну, не буду же я здесь описывать пакет IUP. В его описании есть события.

Цитата
Владимир написал:
Многопоточность для задач торговли тоже вряд ли нужна - во всяком случае, в Квике это лишь неиссякаемый источник глюков.
 Многопоточность удобна для меня. И для меня глюки многопоточности давно исчезли на старых версиях QUIK, а сейчас и на новых версиях QUIK.

Цитата
Владимир написал:
Структура меню также не выдерживает критики: у меня это «дерево» меню содержит несколько сотен веток от корня (думаю, вскоре дойдёт до пары тысяч) и время от времени хочется нарастить его до 3-го уровня, причём с редактируемыми элементами. Но потом вспомнишь, как Квик отвисает от команд, пришедших даже из первого уровня иерархии - и всё проходит.
Структура меню классическая.
Читайте:
Цитата
TGB написал:
«дерево» меню
И так как диалог работает в отдельном потоке, то никаких "отвисаний от команд, пришедших даже из первого уровня иерархии".
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Реализация диалога в OS_Quesha.

    Одной (но не единственной) причиной реализации многопоточности OS_Quesha было: отсутствие в QUIK нормальных средств создания диалога.
  Тот, кто рискнет использовать таблицу QUIK для создания диалога, точно, легких путей не ищет и это подтверждается многочисленными, многогодовыми обсуждениями на разных форумах тех многих проблем, которые при этом возникают.
  Когда мне пришлось перейти на QUIK (в 2019г.), для меня быстро стало понятно, что, то время, которое уйдет на «кувыркание» с таблицами QUIK, лучше потратить на разработку многопоточности, обеспечивающей, наряду с простой реализацией диалога, решение и других задач перевода моего робота на QUIK.
  Возможность порождения в OS_Quesha отдельного потока, обслуживающего диалог, обеспечивает простоту использования существующих бесплатных графических пакетов.  В OS_Quesha был выбран «легкий» (код менее 2Мб) пакет IUP. Этот пакет в текущий момент стабилен и в нем есть версия для работы в Lua. При использовании данного пакета в отдельном потоке, никаких проблем я не обнаружил. Те графические возможности, которые он обеспечивает, для меня, оказались более чем достаточными.
    Форма диалога OS_Quesha запускается в отдельном потоке (никак не связан-ном с основным потоком QUIK, обслуживающим все колбеки и таблицы QUIK), отдельно от окна QUIK и имеет следующий вид:

В ней есть следующие элементы:
1)  меню системы состоящее из двух частей:
-  служебной: Рынок ЦБ, Отладка, Система
-  прикладной (пользовательской): Меню1(образец), Меню2(образец)
2)  поле вывода сообщений диалога;  в это поле выдаются сообщения-ответы на вводимые команды, а также сообщения о критических ситуациях в системе;
3)  поле ввода команд; это поле является командной строкой и используется для ввода сложных команд;    
   строки, не являющиеся служебными командами OS_Quesha, считаются командами приложения и передаются в функцию cmd_OS_Quesha разбора и выполнения команд приложения, описанную в шаблоне TS_QUIK.lua;
4)  поле вывода сообщений системы; в это поле выдаются сообщения о ситуациях, возникающих в системе, не связанных с диалогом.

  Всё вводимое и выводимое полей рабочего места пользователя сохраняется в потокобезопасном журнале диалога OS_Quesha с фиксацией времени возникновения с точностью до 1 миллисекунды.
   Диалог создается на основании его описания (в табличном виде), представленном в шаблоне TS_QUIK.lua, в котором определяются следующие характеристики:
1)  структура меню системы («дерево» меню) и реакции на вызовы его команд;
2)  размеры всех полей диалога;  свойства окон вывода сообщений (очередь/стек и т.д.);
3)  пользовательские меню (примеры Меню1(образец), Меню2(образец)) с заданием пользовательских функций, обрабатывающих команды этих меню (в том числе с заданием любых объектов пакета IUP);
4)  пользовательская функция разбора сообщений поля ввода команд, отлич-ных от служебных.
----
При необходимости, OS_Quesha может быть запущена без формы диалога (это задается в глобальных настройках системы) и тогда все сообщения системы выдаются непосредственно в QUIKе функцией message, но журнал системы при этом ведется как обычно.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Alexey Ivannikov написал:
Уважаемые участники дискуссии, призываем Вас сохранять корректный тон своих высказываний!Если не внемлете просьбе - простым удалением сообщений (как сейчас) отделаться не получится.
 У поддержки есть все возможности быстро навести порядок на форуме и мы это увидели.
Отладка QUIK 8.13
 
Цитата
Roman Azarov написал:
27.04.2021 06:18:12

  TGB , добрый день! Оба пожелания зарегистрированы, мы постараемся их рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожеланий в будущих версиях ПО.Каких-либо сроков назвать не можем. Как будет результат анализа пожеланий, мы сообщим Вам в данной теме.
  Все напряженно  :smile:  ждут.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
Я считаю реалтаймовость для торговых роботов вещью спорной полезности. Способность отреагировать в строго определенный (и короткий) промежуток времени и совершить транзакцию по цене максимум на 1-2 пункта лучше чем нериалтаймовый робот это ничтожный прирост эффективности на фоне общей турбулентности рынка и вариативности результатов торговли в зависимости от прочих параметров. Занимаясь целенаправленной разработкой таких вещей вы скорее всего потратите больше денег чем заработаете на этой разнице за всё последующее время торговли

 Если заменить в выше написанном «реалтаймовость» на высокочастотность (смотрите ее описание в сети) , то,  с написанным, я, в основном, согласен.
  Однако, если обсуждать не стратегии торговли, а средства их реализации, то такие средства должны обеспечивать достаточно быструю реакцию на события, происходящие на фондовом рынке. Конкретно, в экспериментах (с включенным мусорщиком QLua) проверено то, что, в OS_Quesha интервал времени между событиями OnParam (это самые частые события в QUIK) и записью 18 параметров по 24 бумагам в их циклические буфера, менее 1 млсек. c вероятностью более 0,99. При этом, в колбеках OnParam выполняется только неблокирующая короткая запись параметров бумаг в очередь, а все остальное выполняется в main. Наверное, для большинства пользователей QUIK, такая скорость реакции вполне приемлема.  Таким образом, как было мною ранее написано: «в заявленной сфере использования OS_Quesha, обеспечивается требуемый уровень сервиса в определённый промежуток времени». То есть OS_Quesha является системой реального времени для реализации торговли на фондовом рынке, исключая высокочастотную торговлю.
  Другое дело, что общие задержки на события фондового рынка при обычном использовании QUIK определяются следующими формулами:
1) <Общая задержка получения данных> = <Подготовка данных на бирже> + <Передача брокеру> + <Обработка брокером> + <Передача данных пользователю> + <Обработка данных в QUIUK и запуск колбенов> + <Реакция в пользовательской программе на колбеки>;
2) < Общая задержка выдачи пользовательских команд > = < Обработка в пользовательской программе полученных данных >+ <Передача команд в QUIUK >  + <Обработка команд в QUIUK > + <Передача брокеру> + <Обработка брокером> + <Передача команд пользователя брокером на биржу> + <Выполнение команд пользователя биржей>.
 Понятно, что задержка <Реакции в пользовательской программе на колбеки> на фоне остальных составляющих <Общей задержки получения данных> может быть для многих пользователей не сильно критической, но все равно лучше, если эта задержка будет маленькой.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
робот который торгует в реалтаймовом режиме.
  Незачет.  Приходите следующий раз :smile: .
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
Написать робота в таких условиях можно, но говорить что он риалтаймовый - нельзя, в определение риалтаймовости не вписывается.
  1. Дайте определение риалтаймовости торговых роботов.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
По этому определению кстати веб-браузеры это тоже ОС.
 Почему бы нет. Есть и такое мнение. Пошарьте в сети.
-----
Цитата
Артем написал:
Сборщик мусора луа и системный планировщик задач с этим несогласны. 😂
 1. То есть, вы утверждаете:
   1) программа торгового робота не является программой реального времени);
   2) что торгового робота в Windows, в QUIKе написать невозможно.
   Читайте (обращая внимание на фразу "в заявленной сфере ее использования"):
Цитата
TGB написал:
Реальное время в операционных системах — это способность операционной системы обеспечить, в заявленной сфере ее использования, требуемый уровень сервиса в определённый промежуток времени.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
После более 28000 прочтений данной ветки, мне показалось странным, что не был задан вопрос: почему OS_Quesha декларируется как операционная система реального времени?

Ответ.
    1. Разработка любых роботов, в том числе роботов для фондового рынка это разработка программ (систем) реального времени, в которых обрабатываются внешние сигналы (информационные потоки) с минимальным участием человека.
    2. Существуют различные определения ОС. Одно из них (например, на сай-те http://osys.ru/os/1/ponyatie_operatsionnoy_sistemy.shtml) следующее:
«Операционная система (ОС) - комплекс системных и управляющих программ, предназначенных для наиболее эффективного использования всех ресурсов вычислительной системы (ВС) (Вычислительная система - взаимосвязанная совокупность аппаратных средств вычислительной техники и программного обеспечения, предназначенная для обработки информации)».
 Это определение краткое, емкое и, если под ВС понимать Windows, а также установленный в нем QUIK, то оно полностью определяет описанное в начальном комментарии ветки.
   3. Реальное время в операционных системах — это способность операционной системы обеспечить, в заявленной сфере ее использования, требуемый уровень сервиса в определённый промежуток времени.
   При создании OS_Quesha были учтены следующие известные, основные требования к системам реального времени:
 1) обеспечение предсказуемого времени обработки непредсказуемо возникающих внешних событий (обеспечен контроль ограничений на время выполнения циклических функций OS_Quesha; причем, для каждой функции может быть свое такое ограничение); это требование самое существенное, классифицирующее систему как СРВ;
 2) надежность (последнее по времени изменение ядра OS_Quesha было внесено в мае 2019г.);
 3) устойчивость функционирования при сбоях аппаратуры и программ (реализованы средства создания и использования контрольных точек при многопоточной обработки данных);
 4) обеспечение обработки большого количества входных и выходных потоков данных, на обработку каждого из которых в отдельности, может требоваться незначительные вычислительные ресурсы (реализован режим псевдопотоков);
 5) обеспечение непрерывности функционирования систем (OS_Quesha, при ее эксплуатации, работает без перезапусков в течение месяцев, до очередного обновления Windows);
 6) учет динамичности таких систем (в OS_Quesha обеспечена возможность изменения схемы обработки данных в процессе ее функционирования);
 7) контролируемость состояния систем (в OS_Quesha обеспечен контроль утечки памяти, блокировок и зацикливаний потоков, а также состояния очередей взаимодействия П/П).
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
TGB , мой друг из индии сделает качественнее, так что за деньги я лучше к нему обращусь.
  Ну! Пронесло  :smile:  Хорошо, что есть достойный конкурент. А то уже я стал бояться, что вы выкатите такую сумму, что мне придется забросить все свои дела и заняться этим полезным :smile:
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Незнайка написал:
Что имеется ввиду?Пока объект помещается в очередь (буквально - записывается значение в таблицу Lua) или читается из очереди, другой поток стоит. От переключений не ушли ))
 В потоках чтение и запись в упомянутую очередь выполняются независимо. потоки не стоят и не ожидают.

Цитата
Артем написал:
TGB , предлагаю вам реализовать библиотеку QLuaJIT вместо Qesha. Это будет действительно полезно.

И сколько вы готовы заплатить за это полезное  :smile: ? Если меня нанимать, то я запрошу большие деньги.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Обработка колбеков в OS_Quesha.
  Реализована эта обработка в соответствии с рекомендациями разработчика QUIK по использованию очереди параметров колбеков, которые обрабатываются в пользовательском потоке main.
  Особенности обработки колбеков в OS_Quesha следующие:
1) очередь реализована таким образом, что запись (из основного потока QUIK) и чтение (из потока main) в ней выполняется без синхронизации (никаких лишних переключений возможных при синхронизации), но корректно;
2) поток main активируется сразу после записи в очередь (не дожидаясь истечения интервала времени его ожидания в функции аналогичной sleep).
  Понятно, что основной поток при этом не блокируется,  а реакция в main на колбеки реализована с минимальными задержками (в существующей архитектуре QUIK).
Отладка QUIK 8.13
 
1. Более 20 суток не проявляются ошибки синхронизации (смотрите историю исправления этой ошибки в этой ветке) реализации многопотоковости QLua (обусловленной реализо-ванной  разработчиками QUIK архитектуры обработки колбеков). Это, совершенно не значит, что нет ошибок в API взаимодействия скриптов пользователя с QUIK.
2. Есть  предложения, по которым мы ждем ответа от поддержки (их пока два, как я думаю полезных):
1) предложение по исправлению критической ситуации (зависания QUIK на длинных фрагментов байт-кодов «чистых» Lua, без обращения к C-функциям);
2) предложение (не устраняющего критической ситуации, но обеспечивающее эффективность выполнения длинных фрагментов кода QLua с частым обращением к «коротким» C-функциям).
3. Приходится наблюдать интенсивные обсуждения проблем обработки колбеков.
   Есть, как мне кажется, хороший документ разработчика QUIK: «Использование Lua в Ра-бочем месте QUIK.pdf». Наверное, его можно было написать лучше, но даже, в том виде, как он есть, если тот, кто его внимательно прочитает и поймет, может избавиться от многих проблем обработки колбеков.
iCode – код параметра, выводимого в колонке
 
Цитата
Артем написал:
Владимир , было бы уместно в таком случае делать "безголовый" клиент, который по локалхосту может отправлять данные в браузер - а как пользователи будут их отображать это будет их личное дело.

Цитата
Артем написал:
Артем , Да, "уместно в таком случае делать "безголовый" клиент", который будет принимать от юзеров заявки и давать им квитанции об их исполнении или отклонении. Это БАЗОВЫЙ уровень Квика.

 Коротко, четко, практически манифест для разработчиков QUIK.
------
 Глядя, на такие комментарии, мне хочет завершить мой конфликт с swerg. На самом деле, он старается помочь многим пользователям форума, Кроме того, он выкладывает свои профессиональные разработки, полезные многим пользователям.
iCode – код параметра, выводимого в колонке
 
Цитата
Евгений написал:
Я имел в виду видимую таблицу Quik, созданную из скрипта , которую можно вынести за пределы окна программы на другой монитор например.
  Может быть вам подойдет следующий вариант.
  Вы оформляете функцию создания таблицы QUIK в виде отдельного файла. Далее загружаете этот файл с помощью loadfile  в нужный свой скрипт и в нужном месте запускаете байт-код, полученный в loadfile, для создания таблицы QUIK. Это можно делать на любом рабочем месте.
Отладка QUIK 8.13
 
Цитата
swerg написал:
Я, видимо, не понимаю кайфа мазаться
  Я не стал писать это сразу (извините, было некогда), но так как вам так сильно хочется приколов, что вы это особо отметили в вашем тексте, то пожалуйста.
  Вы внимательно прочитайте данную ветку, начиная со своего комментария № 88, и попытайтесь угадать с трех раз  :smile: . Кто, я или вы жаждет (и получает) грязи?
  Вы что, все-таки ловите в этом кайф?
Отладка QUIK 8.13
 
Мой предыдущий комментарий это ответ swerg.
Отладка QUIK 8.13
 
Вы меня здесь упомянули всуе, наверное,  для того, чтобы я вам напомнил наш с вами диалог (кстати, по теме данной ветки)  :smile: .
Ссылка:  https://forum.quik.ru/messages/forum10/message51063/topic6053/#message51063
Отладка QUIK 8.13
 
Цитата
Владимир написал:
базовый интерфейс неплохо бы резко упростить
  Согласен.  Интерфейс должен быть полным, обеспечивающим все необходимые операции пользователя, но максимально простым и ясным. Он должен минимизировать ошибки пользователя и облегчать сопровождение QUIK разработчиком.
Отладка QUIK 8.13
 
Здравствуйте Старатель!

Цитата
Старатель написал:
Roman Azarov , если будете это реализовывать, то предлагаю сделать возможным задавать не только отдельно функции, но и библиотеку целиком, например math.
 Наверное, это было бы пользователям удобно, если будет реализован эффективный анализ особого списка функций.

Цитата
Старатель написал:
Предложение3. Дать скриптеру возможность самостоятельно устанавливать/снимать блокировку в любом месте пользовательского кода
Мне кажется, это может порождать ошибки в скриптах пользователей, не являющихся профессиональными программистами.
Отладка QUIK 8.13
 
Цитата
Roman Azarov написал:
Как будет результат анализа пожеланий, мы сообщим Вам в данной теме.
  Спасибо за ответ. Наверное, результат анализа будет интересен многим, читающим эту тему.
Отладка QUIK 8.13
 
Цитата
Roman Azarov написал:
Во избежание взаимного недопонимания, просим собрать оба предложения, на которые Вы ссылаетесь, в одно, максимально емко описывающее суть пожеланий, обращение, здесь или же нам на почту ( quiksupport@arqatech.com ).
Цитата
Roman Azarov написал:
Мы обязательно примем данное обращение в работу и постараемся представить итоги его анализа.Заранее благодарим.
 Оба предложения собраны в одно (смотрите комментарий № 50). Просьба сообщить, принято ли данное обращение в работу, а также приблизительные сроки ответа.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Незнайка написал:
Байт-код в мейнах нескольких скриптов выполняется параллельно?
  Да.
Но, основной поток QUIK, обслуживающий колбеки и таблицы QUIK (это не таблицы Lua) один. Если он блокируется в каком-либо скрипте, то перестает обслуживать остальные скрипты.
Отладка QUIK 8.13
 
Цитата
Артем написал:
Если вдруг забыли, напоминаю что по вашему-же умозаключению мои навыки и/или познания гораздо превосходят ваши.
  Вы что, шуток не понимаете?  :smile:
Отладка QUIK 8.13
 
Цитата
Артем написал:
Если бы у вас были весомые аргументы, то был бы другой разговор.
 Все-таки, вы, неугомонные  :smile: . Что вас «гложет» так, что вы снова и снова жаждете продолжения  шоу, которое мы с вами устроили здесь и которое, наверное, поднадоело всем, в том числе, и мне? Вы, наверное, могли бы, вместо чтения  и писания в «рандомной» ветке, почитать официальную информацию, которой вы так доверяете (например, инструкции пользователя) на сайте производителя  :smile: . А если вы их уже изучили, то почитать какие-нибудь официальные, полезные для вас, книги по IT. Но вы же читаете и пишите в этой ветке. Какие-то вы уж очень противоречивые  :smile: .
Отладка QUIK 8.13
 
Цитата
Roman Azarov написал:
 Во избежание взаимного недопонимания, просим собрать оба предложения, на которые Вы ссылаетесь, в одно, максимально емко описывающее суть пожеланий, обращение, здесь или же нам на почту
Цитата
Roman Azarov написал:
Мы обязательно примем данное обращение в работу и постараемся представить итоги его анализа.Заранее благодарим.

  Здравствуйте!
В комментарии 50 собраны оба предложения. Просьба их рассмотреть.
Если у вас будут вопросы, то постараюсь на них ответить.
Отладка QUIK 8.13
 
Цитата
Артем написал:
TGB , между официальной документацией и "мне так кажется" от рандома в интернете, выбор несложный.
  Вам жить проще  :smile: . Вы знаете, я обычно, не выбираю между официальной документацией и "рандомом в интернете, а учитываю то и другое и мои выводы не всегда совпадают с тем или другим.
Отладка QUIK 8.13
 
Цитата
Артем написал:
TGB , прочитал логи изменений на обоих языках, ничего про такого рода ошибки не увидел.
  Вы верите всему, что читаете? :smile:
Отладка QUIK 8.13
 
Цитата
Артем написал:
TGB , судя по всему не было. https://forum.quik.ru/messages/forum10/message54811/topic5823/#message54811
 В той ссылки, которую вы указали используется QUIK v.8.13.0.106, Lua 5.4.  Ошибка синхронизации, устранена в версии QUIK v.8.13.1.16 (смотрите файловый архив на сайте разработчика). Надо обращать внимание на номер версии. Наверное, не все ситуации, которые возникают в QUIK 8.5. возникают, например в QUIK v.8.13.0.106
Отладка QUIK 8.13
 
Цитата
Артем написал:
Также смею заметить что обсуждение этого изменения представляет собой байкшеддинг, и вместо лёгких задач надо бы решать важные - то что прерывания иногда разрушают стек и вызывают обрушение скрипта, например.
  Вы до сих пор не поняли, что важная задача решена. Почитайте эту ветку начиная с начала ни чего не пропуская. Возможно у вас что-то проясниться. Если нет, задайте мне вопрос и я вам разъясню.
Отладка QUIK 8.13
 
Цитата
Артем написал:
На мой взгляд достаточно просто добавить в инструкцию предупреждение, что код, не вызывающий никаких С-функций и не создающий никаких объектов в памяти, не может быть прерван и соответственно может создавать зависания до окончания выполнения. Предложить пользователям вставить sleep(0) во внешних циклах при отсутствии каких-либо других операций, снимающих лок.
   Не согласен. В хорошо реализованных средствах, подробности их реализации от пользователя скрываются. Желательно, чтобы пользователь решал свои задачи, а не занимался устранением недостатков используемых средств. И вообще, инструкции для пользователя чем короче, тем лучше.
Отладка QUIK 8.13
 
Цитата
Владимир написал:
исключить sleep и файловые операции
 Это значит исключить эти операции из возможности помещать их в особый список. А далее смотрите мой текст. Хуже, чем сейчас не будет, если написанное будет реализовано корректно.
Отладка QUIK 8.13
 
Цитата
Roman Azarov написал:
Мы обязательно примем данное обращение в работу и постараемся представить итоги его анализа.Заранее благодарим.

Текст данного комментария со Старателем не согласован, но надеюсь, что если, по его мнению, я написал что-то не то, он меня поправит.
---------
  Предложение1 (от Старателя).
     Мое краткое описание ситуации, устраняемое при реализации предложения Старателя, а далее цитаты.
     Бывают ситуации зависания в QLua, когда основной поток обслуживания колбеков всех скриптов пользователя, а также таблиц QUIK (это не таблицы Lua), блокируется выполнением  длинного цикла пользовательской программы на «чистом» Lua, в котором нет ни вызова seep ни вызова других C-функций.
----
   Далее цитирую Старателя:
«Если цикл продолжительный, чтобы не было зависаний, можно вставить внутрь цикла любую с-функцию (не обязательно sleep). Причём, вставлять можно не на каждую итерацию, а через задан-ное количество циклов. Это позволит не подвешивать основной поток и при этом сохранить ско-рость вычислений байткода в циклах.».
---
 Далее цитирую себя:
Комментарий 1.
«То, что предлагает Старатель, наверное, имеет смысл реализовать в самом QLua.
 Это примерно следующее:
1. Добавить в State поле счетчик.
2. При создании State  счетчик = 0.
3. В цикле работы виртуальной машины Lua (исходник Lua 5.3.5 lvm.c)
    после текста:
       Instruction i;
       StkId ra;

   добавить:
   if (++L-> счетчик  > !00)  {   //  100  это конечно же надо задать константой  --
    L-> счетчик = 0;
    lua_unlock(L); lua_lock(L);
   }»
---
Комментарий 2.
« То, что вы предлагаете (это обращение к Старателю), я сделал (в соответствии с тем, как описал в предыдущем моем комментарии) и проверил на своем стенде.
При "количестве циклов" = 1000 обеспечивается высокая скорость выполнения байт-кода и нет зависания.
 Ваше предложение легко реализуемо в QLua.»
--------------------------------------------------------------

Предложение2 (от TGB). Об оптимизации синхронизации в QLua.
  Не затрагивая существующей архитектуры обработки колбеков в QUIK, можно оптимизировать синхронизацию многопоточности QLua.
  Дело в том, что при синхронизации по умолчанию, как это, похоже, реализовано в существующей QLua, все вызовы C-функций имеют следующий общий вид:
unlock ….;
<Вызов C-функции>;
lock ……;
 В операциях unlock и lock возможны переключения потоков. То есть, это ресурсоемкие операции.  Если вызываемая C-функция выполняется быстро, как напри-мер, многие математические функции, то при существующей синхронизации, коэффициент полезного использования времени ЦП может быть очень низким :
<Время выполнения C-функция > / (< Время выполнения unlock >  + < Время выполнения  lock >).
Понятно, что в циклах QLua с обращением к коротким C-функциям QLua занимается в основном синхронизацией.
Идея оптимизации состоит в том, чтобы у пользователя была динамическая возможность задания/отмены C-функций, которые вызываются без выше описанной синхронизации (ввести особый список). Сделать эффективную  реализацию выше описанного несложно.
 Чтобы гарантировать обязательную «щель» для запуска колбеков, из списка допустимых C-функций, описанных в предыдущем абзаце операций, имеет смысл исключить sleep, а возможно, и еще какие-то функции обеспечения  задержек по времени и файловые операции.
 Существенным положительным моментом описанной оптимизации является то, что она никак не затрагивает тех пользователей, которые не будут ее использовать. При ее применении, коэффициент полезного использования времени ЦП:
1) для функций из особого списка: <Время выполнения C-функция > / < Время анализа особого списка>  
2) для обычных функций: <Время выполнения C-функция > / (< Время анализа особого списка> + < Время выполнения unlock >  + < Время выполнения  lock> ).
  При качественной реализации оптимизации можно добиться того, чтобы < Время анализа особо-го списка> было существенно меньше, чем (< Время выполнения unlock >  + < Время выполнения  lock>).
--------

   Предложение1 и Предложение2 совместимы при их совместной реализации, если реализация Предложения1 будет похожа на то, написано в Комментарий 1.    
    Предложение1 устраняет критическую ситуацию. Кроме того его реализация проста. Поэтому Предложение1 имеет смысл реализовать в первую очередь.
Отладка QUIK 8.13
 
Есть два предложения по улучшению QLua.

   Первое по важности это, как мне представляется, ценное предложение Старателя по устранению критической ситуации «подвисания» скриптов на длинных участках чистого Lua (без вызова C-функций). Ссылка на его комментарий:  здесь
  Ниже его комментария есть два моих комментария о том, как это можно просто реализовать в QLua.
-----
  Второе предложение мое (ссылка на комментарий: здесь).
В нем описывается вариант повышения эффективности выполнения в скриптах длинных участков с частым обращениям к коротким C-функциям.
------

  Хотелось бы увидеть реакцию поддержки на эти два предложения.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Старатель написал:
Причём, вставлять можно не на каждую итерацию, а через заданное количество циклов. Это позволит не подвешивать основной поток и при этом сохранить скорость вычислений байткода в циклах.
  То, что вы предлагаете, я сделал (в соответствии с тем, как описал в предыдущем моем комментарии) и проверил на своем стенде.
При "количестве циклов" = 1000 обеспечивается высокая скорость выполнения байт-кода и нет зависания.
  Ваше предложение легко реализуемо в QLua.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Старатель написал:
Причём, вставлять можно не на каждую итерацию, а через заданное количество циклов. Это позволит не подвешивать основной поток и при этом сохранить скорость вычислений байткода в циклах.
 То, что предлагает Старатель, наверное, имеет смысл реализовать в самом QLua.
  Это примерно следующее:
 1. Добавить в State поле счетчик.
 2. При создании State  счетчик = 0.
 3. В цикле работы виртуальной машины Lua (исходник Lua 5.3.5 lvm.c)
     после текста:
        Instruction i;
        StkId ra;

    добавить:
    if (++L-> счетчик  > !00)  {   //  100  это конечно же надо задать константой  --
     L-> счетчик = 0;
     lua_unlock(L); lua_lock(L);
    }
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
После того как в QUIK 8.13.0.106 (с последними его исправлениями) синхронизация в QLua стала работать корректно (историю исправления можно посмотреть в ветке  "Отладка QUIK 8.13" ), стабильность OS_Quesha, при работе в этой версии QUIK, стала такой же, как в старых версиях (до версии 8.5).
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
Я же говорю, что мой стиль идеальнее!  
 Не согласен, я Атема ни разу не обозвал грязными словами. Но, думаю, что от этого ему не сильно легче.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
Таблетки примите, уважаемый.
 Это все на что способен этот не уважаемый  :smile:
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
но это вы уже сами себе Буратино.
 Я хотел это оставить на потом, но исходя из того. что, похоже на то. что вы не исправимы:
  1) вы не плохо разбираетесь в языке программирования Lua (это ваш плюс);
  2) у вас много комплексов; и главный комплекс это проблема самодостаточности. когда вам хочется кого то унизить (но вы зря думаете. что я это подходящий объект0.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
TGB , подразумевая что заспавнить вторую вм с аргументами это сложная и нетривиальная задача. Можно конечно изголяться чтобы например глобалки сами синхронизировались, но это вы уже сами себе Буратино.
 Вы сами, понимаете, что написали?  Все таки вы упорный. Зачем вы нарыватесь?
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
По поводу многопоточности кстати.
 Сделайте свою многопоточную систему работы в одном скрипте QLua, и тогда, может быть, я с вами пообщаюсь.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
По поводу многопоточности кстати. Существует классические ...
 Меня не интересуют классические имплементации. С этим разбирайтесь вы.
Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 След.
Наверх