Будет ли сопрограмма Kotlin всегда работать в одном потоке? Если нет, то как мы можем заставить его работать с семантикой Guice Request Scope?

Объем запроса позволяет нам отслеживать переменные по запросу во время обработки запроса. Но я думаю, что это зависит от локальных переменных потока. Я предполагаю, что использование сопрограмм Kotlin нарушит семантику Guice Injection of Request Scope.

1 ответ

Решение

Сопрограммы не всегда выполняются в одном потоке, и поэтому у вас будут проблемы с локальными переменными потока, например, Guice Request Scope.

Но можно передавать локальные переменные потока между сопрограммами: https://github.com/Kotlin/kotlinx.coroutines/blob/master/docs/coroutine-context-and-dispatchers.md#thread-local-data

Я не знаю Guice, и поэтому я не знаю, есть ли способ интегрировать ThreadContextElement в эти рамки.

См. Также: Как использовать код, основанный на ThreadLocal, с сопрограммами Kotlin.

Другие вопросы по тегам