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

CompletableDeferred documentation говорит

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

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

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

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

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

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