2017-12-05 9 views
1

CompletableDeferredドキュメントは、このインターフェイス上で、そこから派生したすべてのインターフェイス上`SendChannel.offer`、` CompletableDeferred.complete`などはコルーチンの外で呼び出すことができますか?

すべての関数はスレッドセーフであり、安全に外部同期せずに同時コルーチンから呼び出すことができると言います。

これらの関数を任意のコルーチンの外部で呼び出すことは安全ですか?

SendChannel<E>については

offerclosesuspendではありませんので、彼らは文法的にコルーチンの外に呼び出すことができますが、そうすることが実際に安全なのですか?

コルーチンが必要な場合は、が最も安い方法は何ですか:launch(Unconfined)

答えて

1

offercloseはどこからでもかまいません。それはドキュメントが "スレッドセーフな"フレーズで言うことを意味します。

これらのメソッドがチャネルAPIに含まれる理由の1つは、様々なコールバックとイベントハンドラに基づいた通常の非コルーチン世界とコルーチンを統合できるようにすることです。このような統合の実際の例をこのguide on UI programming with coroutinesに見ることができます。

関連する問題