Все ли функции приостановки имеют работу? - PullRequest
0 голосов
/ 05 мая 2018

Безопасно ли coroutineContext[Job]!! использовать внутри функции suspend? Все ли функции приостановки имеют задание?

1 Ответ

0 голосов
/ 07 мая 2018

Нет, не все функции приостановки имеют задание.

coroutineContext - это общий механизм Kotlin для прозрачной передачи объектов, связанных с сопрограммами, через suspend цепочку вызовов, а Job - это kotlinx.coroutines специфическая абстракция.

Если вы запустили сопрограмму с помощью любого kotlinx.coroutines компоновщика, который поддерживает Job (например, с использованием async, launch или produce. Вы можете проверить документацию конкретного компоновщика, чтобы проверить, поддерживает ли он Job ), тогда у вас есть Job в вашем coroutineContext.

Но если вы запустили сопрограмму по-другому, например, используя stdlib buildSequence, контекст сопрограммы не будет содержать задание.

...