2.2. Параллельные вычисления#
New in version AS: 1.20 rc 22
В коде модуля GTK
решения допускается запуск дополнительных потоков для выполнения параллельных вычислений или ожидания
выполнения асинхронного взаимодействия с внешними сервисами.
Для связывания создаваемого потока с инфраструктурой AS необходимо:
в текущем потоке, из текущего
контекста рабочего сеанса
, получить экземпляр новогоподчинённого контекста
.из созданного потока вызвать метод
WorkSessionSubCtx.enterThread()
полученного подчинённого контекста.
После этого, в потоке будут инициализированы все контекстные переменные, необходимые для создания и открытия прикладной GTK-сессии, предоставляющей доступ к данным и коду решения от имени пользователя, владеющего рабочим сеансом.
По завершению работы дополнительного потока, необходимо, вызовом метода WorkSessionSubCtx.leaveThread()
,
отвязать подчинённый контекст от потока. Иначе, при использовании пула потоков java.util.concurrent.ExecutorService
,
повторная попытка связывания потока и подчиненного контекста рабочего сеанса приведёт к ошибке, т.к. один поток может
работать только с одним контекстом.