.. _parallel_computing: Параллельные вычисления ======================= .. versionadded:: AS 1.20 rc 22 В коде модуля ``GTK`` решения допускается запуск дополнительных потоков для выполнения параллельных вычислений или ожидания выполнения асинхронного взаимодействия с внешними сервисами. Для связывания создаваемого потока с инфраструктурой AS необходимо: * в текущем потоке, из текущего :java:type:`контекста рабочего сеанса`, получить экземпляр нового :java:type:`подчинённого контекста`. * из созданного потока вызвать метод :java:meth:`WorkSessionSubCtx.enterThread()` полученного подчинённого контекста. После этого, в потоке будут инициализированы все контекстные переменные, необходимые для создания и открытия прикладной GTK-сессии, предоставляющей доступ к данным и коду решения от имени пользователя, владеющего рабочим сеансом. По завершению работы дополнительного потока, необходимо, вызовом метода :java:meth:`WorkSessionSubCtx.leaveThread()`, отвязать подчинённый контекст от потока. Иначе, при использовании пула потоков :java:ref:`java.util.concurrent.ExecutorService`, повторная попытка связывания потока и подчиненного контекста рабочего сеанса приведёт к ошибке, т.к. один поток может работать только с одним контекстом. .. seealso:: :java:meth:`WorkSessionCtx.newWorkSessionSubCtx()`, :java:type:`WorkSessionSubCtx`, :java:meth:`WorkSessionCtx.getThreadInterrupter()`, :java:type:`CoreThreadInterrupter`