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

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


person Dragonborn    schedule 01.03.2019    source источник


Ответы (1)


Сопрограммы не всегда работают в одном и том же потоке, поэтому у вас будут проблемы с локальными переменными потока, например. Объем запроса Guice.

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

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

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

person Rene    schedule 01.03.2019