Описание тега omnithreadlibrary

OmniThreadLibrary - это библиотека Delphi, предназначенная для облегчения многопоточности.
1 ответ

Какую абстракцию использовать для драйвера ASynchronous Dat a Collection

Я хотел бы реализовать механизм в моем серверном приложении, но я не уверен, какая абстракция OTL будет наиболее подходящей. Мое приложение собирает данные о различных типах оборудования. Некоторые из них используют синхронную связь, таким образом г…
1 ответ

Как использовать шаблон конвейера в Delphi

Я пытаюсь реализовать шаблон конвейера в моем тестовом проекте ( Как сделать вызовы Mutlithreded idhttp для работы с StringList), но мне не удается адаптировать TThread код для кода шаблона конвейера. Существует не так много ресурсов о том, как его …
0 ответов

Утечки памяти в параллели OmniThreadLibrary.ForEach

Я использую OmniThreadLibrary, Имеет параллельный метод ForEach, Я работаю в высоконагруженной системе, и мне нужно обрабатывать некоторые массивы параллельно. Но я получаю утечку памяти. Вот образец: procedure TForm7.FormCreate(Sender: TObject); va…
1 ответ

Поддерживает ли OmnithreadLibrary "кражу работы"?

Кража работ, например, доступна в среде Fork / Join на платформе Java. (См. Чем инфраструктура fork/join лучше, чем пул потоков?) - возможно ли нечто подобное с OmniThreadLibrary? Воровство работы: рабочие потоки, у которых заканчиваются дела, могут…
06 июл '12 в 16:51
1 ответ

Отменить запланированное задание

У меня есть приложение Windows Delphi, которое получает события, при каждом из которых я хотел бы запустить задачу параллельно (чтобы я мог быть готов к следующему событию). Есть много способов сделать это с помощью всевозможных абстракций библиотек…
16 фев '15 в 16:24
2 ответа

Обзор OmniThreadLibrary

Есть ли место, где есть вводный обзор OmniThreadLibray для Delphi? У меня есть текущий код, установленный в Delphi XE. Примеры работают. Я просматривал связанный блог The Delphi Geek с примерами использования. gabr признает, что документации не суще…
13 июл '11 в 13:32
2 ответа

Есть ли менее ресурсоемкая альтернатива для TOmniMREW?

Мне нужна тонкая блокировка однократной многозаписной записи, похожая на TOmniMREW, но она будет менее ресурсоемкой в ​​случае конфликта. TOmniREW использует только спин-блокировку, поэтому потоки будут стремительно расти до 100% загрузки ЦП, пока н…
19 ноя '13 в 11:58
1 ответ

Получить результат функции асинхронно в Delphi, используя Omni Thread Library

Я пытаюсь вызвать функцию из другого модуля / класса, которая займет некоторое время при выполнении задачи и вернет строковое значение. Я не смог найти хорошую ссылку на что-то похожее на C# async-await, как простой подход в Delphi. Использование би…
1 ответ

Обработка исключений с IOmniParallelTask ​​не работает

Необработанные исключения внутри IOmniParallelTask выполнение (как я понимаю документы) должно быть отслежено OTL и присоединено к IOmniTaskControl экземпляр, к которому может получить доступ termination handler от IOmniTaskConfig, Так что после нас…
12 дек '15 в 23:49
2 ответа

Как я могу захватывать переменные анонимным методом при использовании его в OTL?

Что я хочу сделать: У меня есть несколько объектов в списке родов. Я хочу захватить каждый из этих объектов в анонимном методе и выполнить этот метод как отдельную задачу OTL. Это упрощенный пример: program Project51; {$APPTYPE CONSOLE} uses SysUtil…
0 ответов

Ошибка компиляции Omni Thread Lib в Delphi 10.2 Tokyo Win 64 bit

Я пытаюсь установить Omni Thread Lib в моем Delphi 10.2 Tokyo, у меня Windows 64bit я получаю это сообщение, когда пытаюсь скомпилировать пакет Design Time..[dcc32 Fatal Error] OmniThreadLibraryRuntime.dpk(58): F2048 Bad unit format: '..\..\src\GpLi…
28 апр '18 в 17:23
0 ответов

Как вызвать TIdHTTP.Disconnect при запуске в задаче OmniThreadLibrary

Мне интересно, как я могу отключить экземпляр TIdHTTP в Delphi Seattle, пока он выполняется в анонимной процедуре CreateTask из OmniThreadLibrary. Мой текущий код выглядит так: task := CreateTask( procedure(const task: IOmniTask) var http: TIdHTTP; …
14 июн '16 в 19:59
0 ответов

Какая абстракция высокого уровня OTL лучше всего подходит для параллельной загрузки изображений?

Я хотел бы раскрыть вам мою проблему здесь. Я пытаюсь создать пользовательский интерфейс в одном из моих приложений, где пользователь может видеть несколько изображений (объектов TImage) в одной форме. Эти изображения должны быть загружены из потенц…
05 янв '17 в 14:30
1 ответ

Проблемы с получением данных JSON из DLL с использованием SuperObject и OmniThreadLibrary

Я использую Delphi XE, у меня есть следующий код для моей программы и DLL: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, superobject, OtlCommon, OtlCollections, OtlParallel; …
09 апр '15 в 12:43
1 ответ

Ожидание завершения Invoke при использовании IOmniTaskControl/TOmniWorker

Я создал IOmniTaskControl с помощью TOmniWorker, чтобы я мог периодически запускать куски кода в определенном потоке. Поэтому я буду вызывать Invoke по мере необходимости на этом IOmniTaskControl. Когда я это сделаю, мне иногда придется ждать заверш…
16 мар '16 в 22:08
1 ответ

Портирование многопоточного приложения Delphi на Mac: какие у меня есть выбор?

Мне нужно портировать приложение (написанное на XE2) на Mac. Мое приложение разбито на простое UI executable (однопоточный) и невидимый engine (который сильно зависит от OmniThreadLibrary 3.02 и Cromis DirectoryWatch ) Оба EXE- файла общаются черезC…
4 ответа

OmniThreadLibrary - код: 1816. Недостаточно квоты для обработки этой команды

Обновление 1: я включил следы стека всех потоков, а не только основных потоков - я думал, что этого уже достаточно. Обновление 2: я снова открыл этот вопрос, поскольку даже после применения изменений, показанных в моем собственном вопросе, я все еще…
03 авг '14 в 10:05
0 ответов

Используете DataSet, возвращенный datasnap ServerMethod в потоке?

Я вызываю серверный метод изнутри потока, используя Omnithreadlibrary, данные возвращаются успешно, но у меня возникают проблемы с использованием возвращаемых данных, все, что я пробовал, связано с AccessViolation или даже сбоем приложения, пытался …
18 ноя '11 в 16:05
1 ответ

Как обновить индикатор прогресса из второго потока?

У меня есть основная форма с индикатором прогресса. В модуле данных у меня есть десять наборов данных, для каждого из них определено событие OnBeforeOpen. Я хотел бы показать через индикатор выполнения в основной форме процент прогресса открытых наб…
03 апр '13 в 08:54
1 ответ

Зачем мне нужен Sharemem в моей DLL Delphi, которая предоставляет только функцию с параметрами WideString?

У меня есть DLL и тестовое приложение, написанное на Delphi. Тестовое приложение использует несколько потоков для вызова функции, экспортируемой dll. Экспортируемая функция имеет тривиальную поточно-ориентированную реализацию. При запуске тестового …