Доработка интерфейса-обертки, Delphi
Доработка интерфейса-обертки для работы с платформой QUIK по API.
Язык: Delphi 7
Вводная:
В интерфейсе - 4 каллбека, в них асинхронно поступают данные от QUIK и добавляются в TThreadList в виде объектов.
Обработчику листа TThreadList отправляются PostMessage-ивенты о факте получения новых записей.
Далее обработчик отправляет эти объекты в основное приложение.
Проблема заключается в синхронизации TThreadList.LockList между обработчиком и каллбеками:
когда в процессе выполнения обработчика в некоторые каллбеки приходит больше 1 записи происходит двойной лок.
Контекст разработки:
Основное приложение, использующее вышеописанный интерфейс, включает в себя
достаточно много различных библиотек/компонентов и его миграция затруднительна.
Поэтому необходима локальная разработка с использованием Teamviewer.
ТЗ:
Реализация механизма синхронизации между асинхронными каллбеками и
их обработчиком при помощи Lock-free queue list, Thread pool или другими методами.
Желательна разработка наиболее быстрого и эффективного варианта.
Использование Teamviewer или других менеджеров удаленных десктопов.