Могут ли `SendChannel.offer`,` CompletableDeferred.complete` и подобные быть вызваны внешними сопрограммами?

CompletableDeferred documentation говорит

Все функции этого интерфейса и на всех интерфейсах, полученных из него, являются потокобезопасными и могут безопасно вызываться из параллельных сопрограмм без внешней синхронизации.

Безопасно ли вызывать эти функции вне любой сопрограммы?

Для SendChannel<E> offer и close не suspend и поэтому их можно вызывать внешними сопрограммами синтаксически, но действительно ли это безопасно?

Если требуется сопрограмма, то какой самый дешевый способ запустить один: launch(Unconfined) ?

Безопасно позвонить и close откуда угодно. Это то, что означает документация с фразой «являются потокобезопасными».

Одна из причин, по которой эти методы включены в API каналов, заключается в том, чтобы включить интеграцию сопрограмм с обычным non-coroutine world, который основан на различных обратных вызовах и обработчиках событий. Вы можете увидеть фактический пример такой интеграции в этом руководстве по программированию пользовательского интерфейса с сопрограммами .

Intereting Posts
Облицовка проблем с реализацией Rx Java с архитектурой потока в kotlin android возвращение последнего выражения в блок Хотя цикл в языке программирования Kotlin Как ссылаться на «это» в анонимных слушателях при использовании коротких обозначений? Как рекурсивно перебирать атрибуты JsonObject? Попытка загрузить файл в основное действие onCreate Классы Котлина, содержащие андроид-расширения, не построенные на последовательных строках Расширение TreeMap в Kotlin не работает Создание кеша ehcache в Котлине Переопределяющий val, определенный в интерфейсе, с использованием var с тем же именем, определенным в суперклассе Как сопроводители реализуются в JVM-языках без поддержки JVM? Android Studio конвертирует Java в ошибку Kotlin Невозможно вывести тип для этого параметра. Пожалуйста, укажите это явно smart cast невозможно, потому что экземпляр является изменяемым свойством Как поместить элемент на карту и вернуть карту Kotlin Android Button.onClickListener вызывает NoSuchMethodError