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