Задача 102.176812

Задача :102.176812

Краткое описание :
Требуется обеспечить возможность вызова Атлантического кода в произвольном потоке .NET без накдадных расходов на переключение потоков
Описание :
Общие задачи по проекту
Что измененно :


Ядро рабочего процесса 2-хуровневого Атлантис-приложения (AtlWP.dll)

----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Требуется обеспечить возможность вызова Атлантического кода в произвольном потоке .NET без накдадных расходов на переключение потоков.


Как измененно :

Реализован набор методов для управления пользовательскими контекстами и выполнения в них произвольных функций. В таком контексте инициализируется полноценное Атлантис-приложение, только вместо передачи управления его модальному циклу вызывается точка расширения epAppInit.

Экспортируются из AtlWP.dll:
// возвращает дескриптор текущего рабочего контекста
GetCurrentWorkerContext: function (var ContextHandle: HUserContext): boolean; StdCall = nil;
// создаёт рабочий контекст
CreateWorkerContext: function(var ContextHandle: HUserContext): boolean; StdCall = nil;
// уничтожает рабочий контекст
DestroyWorkerContext: function(var ContextHandle: HUserContext): boolean; StdCall = nil;
// ключевой метод: выполняет Func с параметром Param в текущем потоке, используя рабочий контекст
ExecuteInWorkerContext: function(ContextHandle: HUserContext; Func: TWorkerFunction; Param: pointer = nil): boolean; StdCall = nil;

// следующие методы использовать только в качестве аргумента в вызове ExecuteInWorkerContext

// инициализирует пользовательские переменные (user(thread)-local storage)
InitializeWorkerContext: function(DummyParam: pointer = nil): boolean; StdCall = nil;
// финализирует пользовательские переменные
FinalizeWorkerContext: function(DummyParam: pointer = nil): boolean; StdCall = nil;
// инициализирует приложение
InitializeApplication: function(CommandLine: PChar): boolean; StdCall = nil;
// выполняет точку расширения epAppInit
RunApplication: function(DummyParam: pointer = nil): boolean; StdCall = nil;
// финализирует приложение
FinalizeApplication: function(DummyParam: pointer = nil): boolean; StdCall = nil;

Название продукта Название компонента Тип Последняя версия Дата выхода
AtlWPATLWPDLL5.5.32.0