Size: a a a

Kotlin Community

2020 March 10

IS

Ivan Sablin in Kotlin Community
Alexander Levin
Не, если боксинг не проблема, то окей. Просто зависит от того, какие ожидания

NB: на ошибку сначала не обратил внимания. Это в любом случае баг и надо ишью писать/лайкать если уже есть.
боксинг же будет происходить только когда используем интерфейс? если использовать имплементации, то нормально должно быть?
источник

AL

Alexander Levin in Kotlin Community
Ivan Sablin
боксинг же будет происходить только когда используем интерфейс? если использовать имплементации, то нормально должно быть?
Как я понимаю, да. Передали Millis куда-то где нужен Millis - всё хорошо, у вас под капотом просто лонг. Передали Millis куда-то где нужен TimeUnit - будет боксинг.
источник

IS

Ivan Sablin in Kotlin Community
ну да, походу с этим ничего не сделать, но в любом случае не кажется. что как-то сильно оптимизировать можно, даже если по другому пути пойти, убрать инлайн там например совсем, так хотя бы работая с имплементациями все хорошо будет
источник

AA

Alidibir Akhbulatov in Kotlin Community
Всем привет. Вопрос по корутинам: есть ли возможность чтобы CancellationException вызвался сразу после job.cancel? Кейс: идет долгий процесс буферизации потока файла, и после job.cancel хотелось бы в CancellationException закрыть поток пока он в процессе, но сейчас идет ожидание окончания процесса буф-и и после блок exception
источник

VP

Vladimir Petrakovich in Kotlin Community
Alidibir Akhbulatov
Всем привет. Вопрос по корутинам: есть ли возможность чтобы CancellationException вызвался сразу после job.cancel? Кейс: идет долгий процесс буферизации потока файла, и после job.cancel хотелось бы в CancellationException закрыть поток пока он в процессе, но сейчас идет ожидание окончания процесса буф-и и после блок exception
Можно попробовать закрывать поток в job.invokeOnCompletion
источник

AA

Alidibir Akhbulatov in Kotlin Community
Vladimir Petrakovich
Можно попробовать закрывать поток в job.invokeOnCompletion
но он вызывается после CancellationException
источник

AA

Alidibir Akhbulatov in Kotlin Community
т.е. опять же идет ожидание завершения
источник

VP

Vladimir Petrakovich in Kotlin Community
Alidibir Akhbulatov
но он вызывается после CancellationException
В смысле, что по вашему есть "вызов CancellationException"?
источник

VP

Vladimir Petrakovich in Kotlin Community
А операция чтения точно завершается сразу при закрытии потока? Может, там прерывание вообще не поддерживается.
источник

AA

Alidibir Akhbulatov in Kotlin Community
Vladimir Petrakovich
В смысле, что по вашему есть "вызов CancellationException"?
кидание данного исключения после job.cancel, который обрабатываю в try-catch
источник

VP

Vladimir Petrakovich in Kotlin Community
Alidibir Akhbulatov
кидание данного исключения после job.cancel, который обрабатываю в try-catch
А, понятно. Тогда наверное остаётся только оборачивать чтение в suspendCancellableCoroutine.
источник

AA

Alidibir Akhbulatov in Kotlin Community
Vladimir Petrakovich
А операция чтения точно завершается сразу при закрытии потока? Может, там прерывание вообще не поддерживается.
там, да, поддержки отмены нет, поэтому и хотел в блоке catch закрыть его
источник

VP

Vladimir Petrakovich in Kotlin Community
Alidibir Akhbulatov
там, да, поддержки отмены нет, поэтому и хотел в блоке catch закрыть его
Так не, его возможно нельзя из другого потока закрывать
источник

VP

Vladimir Petrakovich in Kotlin Community
Стоит проверить этот момент в документации
источник

AA

Alidibir Akhbulatov in Kotlin Community
Vladimir Petrakovich
А, понятно. Тогда наверное остаётся только оборачивать чтение в suspendCancellableCoroutine.
попробую с suspendCancellableCoroutine. возможно то, что нужно. спасибо
источник

OY

Oleg Yukhnevich in Kotlin Community
Alidibir Akhbulatov
Всем привет. Вопрос по корутинам: есть ли возможность чтобы CancellationException вызвался сразу после job.cancel? Кейс: идет долгий процесс буферизации потока файла, и после job.cancel хотелось бы в CancellationException закрыть поток пока он в процессе, но сейчас идет ожидание окончания процесса буф-и и после блок exception
Можно ещё посмотреть, может там где-то можно вставить ensureActive
источник

AT

Alexey Tkachenko in Kotlin Community
Люди, я что-то пропустил и корутины при отмене научились прерывать операции чтения из файлов?
источник

AA

Alidibir Akhbulatov in Kotlin Community
Alexey Tkachenko
Люди, я что-то пропустил и корутины при отмене научились прерывать операции чтения из файлов?
не про отмену чтения из файла, а кидание CancellableException сразу после вызова job.cancel
источник

AT

Alexey Tkachenko in Kotlin Community
ну так для этого же надо прервать выполнение, да?
источник

AA

Alidibir Akhbulatov in Kotlin Community
вот пример кода: https://codeshare.io/aY1Kyn
источник