cancelChildrenはKotlinコルーチンでどのように機能する必要がありますか?

ケビン・ジョーンズ

ドキュメントによると、cancelChildrenはコルーチンの子をキャンセルする必要がありますが、親は影響を受けません(「このジョブ自体の状態は影響を受けません」)。ただし、次のようなコードがある場合

    val outer = launch {
    try {
        launch (coroutineContext) {
            try {
                // work here
            } catch (ex: Exception) {
                println("In inner catch")
            } finally {
                println("In inner finally")
            }
        }
        delay(5000) // so the outer job is running when I cancel it
    } catch (ex: CancellationException) {
        println("In outer catch")
    } finally {
        println("In outer finally")
    }
}

delay(100) // give it  a chance to run
outer.cancelChildren()

次に、次のように表示されます

In inner catch
In inner finally
In outer catch
In outer finally

「外部」ジョブがキャンセルされるのはなぜですか?

これは、outer.cancelを呼び出した場合に得られる動作とまったく同じです(ただし、期待しています)

s1m0nw1

delay(5000)外側のコルーチンのあなたはキャンセル可能であるため、の影響を受けouter.cancelChildren()ます。CancellationExceptionアウターに見られるものを投げtryます。このcancelChildren関数は外部ジョブをキャンセルしません。これはouter.isCancelled、呼び出し後に確認することで明らかになります。

場合はdelay呼び出しがコードから削除され、それが期待される結果を出力します。コルーチンとにかく子供を待つことに注意してください。遅延は必要ありません。

親コルーチンは、常にすべての子の完了を待ちます。親は、起動するすべての子を明示的に追跡する必要はなく、最後にそれらを待つためにJob.joinを使用する必要もありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Kotlinコルーチンは内部でどのように機能しますか?

分類Dev

hasNot()はGremlinでどのように機能する必要がありますか?

分類Dev

どのように私はKotlin拡張機能をテストする必要がありますか?

分類Dev

JProgressbarはどのように機能する必要がありますか?

分類Dev

Kotlinコルーチン-遅延、どのように機能しますか?

分類Dev

このJavaScriptコードがどのように機能するかは明確ではありません。

分類Dev

Chrome拡張機能からローカルコンテンツを提供する際にキャッシュを利用するにはどうすればよいですか(または利用する必要がありますか)?

分類Dev

MongoClientのライフサイクルはどのように機能する必要がありますか?

分類Dev

厳しいIDで機能するようにこのコードをどのように変更する必要がありますか?

分類Dev

OpenGL ES 1.x以降のバージョンでテクスチャ座標がどのように機能するかに違いはありますか?

分類Dev

モジュロと剰余はSchemeでどのように機能する必要がありますか?

分類Dev

Pythonファイルは、コマンドラインオプションとパイプ機能を備えたモジュールとスクリプトの両方になるようにどのように作成する必要がありますか?

分類Dev

onNextなしのobserver.onComplete()は、フラットマップのチェーンでどのように機能しますか?-次のすべてのフラットマップをスキップする必要がありますよね?

分類Dev

@ManyToOne(updatable = false)-どのように機能する必要がありますか?

分類Dev

'binding'属性はJSFでどのように機能しますか?いつ、どのように使用する必要がありますか?

分類Dev

forループは、その中の関数がangularjsでの実行を終了するまでどのように待機する必要がありますか?

分類Dev

character_count を機能させるには、HTML および JavaScript コードにどのような変更を加える必要がありますか?

分類Dev

around_actionコールバックはどのように機能しますか?説明が必要です

分類Dev

Magentoのインストール時に「PHP拡張機能「0」をロードする必要があります」というエラーを回避するにはどうすればよいですか?

分類Dev

フレックスアイテムのパーセントマージンはどのように機能する必要がありますか?

分類Dev

reduxヘルパーはディスパッチをどのように参照する必要がありますか?

分類Dev

SQLiteJDBCが機能するようにSQLiteをインストールする必要がありますか?

分類Dev

これを機能させるにはどうすればよいですか?変数オプションをより具体的にする必要があります

分類Dev

PythonでHTTPHandlerをRotatingFileHandlerとどのようにチェーンする必要がありますか?

分類Dev

__init__のコルーチンに依存する変数をどのように定義する必要がありますか?

分類Dev

多機能コンストラクターを使用してライブラリをどのように設計する必要がありますか?

分類Dev

Pythonモジュールはコード生成をどのように使用する必要がありますか?

分類Dev

このメールにすでにアカウント機能があるかどうかの確認は、PHPHTMLおよびMySQLでは機能しません。

分類Dev

コンダ:どのチャネルからパッケージを入手したかをどのように知る必要がありますか

Related 関連記事

  1. 1

    Kotlinコルーチンは内部でどのように機能しますか?

  2. 2

    hasNot()はGremlinでどのように機能する必要がありますか?

  3. 3

    どのように私はKotlin拡張機能をテストする必要がありますか?

  4. 4

    JProgressbarはどのように機能する必要がありますか?

  5. 5

    Kotlinコルーチン-遅延、どのように機能しますか?

  6. 6

    このJavaScriptコードがどのように機能するかは明確ではありません。

  7. 7

    Chrome拡張機能からローカルコンテンツを提供する際にキャッシュを利用するにはどうすればよいですか(または利用する必要がありますか)?

  8. 8

    MongoClientのライフサイクルはどのように機能する必要がありますか?

  9. 9

    厳しいIDで機能するようにこのコードをどのように変更する必要がありますか?

  10. 10

    OpenGL ES 1.x以降のバージョンでテクスチャ座標がどのように機能するかに違いはありますか?

  11. 11

    モジュロと剰余はSchemeでどのように機能する必要がありますか?

  12. 12

    Pythonファイルは、コマンドラインオプションとパイプ機能を備えたモジュールとスクリプトの両方になるようにどのように作成する必要がありますか?

  13. 13

    onNextなしのobserver.onComplete()は、フラットマップのチェーンでどのように機能しますか?-次のすべてのフラットマップをスキップする必要がありますよね?

  14. 14

    @ManyToOne(updatable = false)-どのように機能する必要がありますか?

  15. 15

    'binding'属性はJSFでどのように機能しますか?いつ、どのように使用する必要がありますか?

  16. 16

    forループは、その中の関数がangularjsでの実行を終了するまでどのように待機する必要がありますか?

  17. 17

    character_count を機能させるには、HTML および JavaScript コードにどのような変更を加える必要がありますか?

  18. 18

    around_actionコールバックはどのように機能しますか?説明が必要です

  19. 19

    Magentoのインストール時に「PHP拡張機能「0」をロードする必要があります」というエラーを回避するにはどうすればよいですか?

  20. 20

    フレックスアイテムのパーセントマージンはどのように機能する必要がありますか?

  21. 21

    reduxヘルパーはディスパッチをどのように参照する必要がありますか?

  22. 22

    SQLiteJDBCが機能するようにSQLiteをインストールする必要がありますか?

  23. 23

    これを機能させるにはどうすればよいですか?変数オプションをより具体的にする必要があります

  24. 24

    PythonでHTTPHandlerをRotatingFileHandlerとどのようにチェーンする必要がありますか?

  25. 25

    __init__のコルーチンに依存する変数をどのように定義する必要がありますか?

  26. 26

    多機能コンストラクターを使用してライブラリをどのように設計する必要がありますか?

  27. 27

    Pythonモジュールはコード生成をどのように使用する必要がありますか?

  28. 28

    このメールにすでにアカウント機能があるかどうかの確認は、PHPHTMLおよびMySQLでは機能しません。

  29. 29

    コンダ:どのチャネルからパッケージを入手したかをどのように知る必要がありますか

ホットタグ

アーカイブ