💻 VerseTips #53

branchで分岐非同期処理

branchで分岐非同期処理

branch{}は新しい非同期タスクを開始しつつ、即座に制御を返します。spawn{}と異なり、構造化された方法でタスクを追跡できます。

詳細解説

branch{}は構造化された非同期分岐を作成します。


【基本構文】

Task := branch {

LongRunningProcess()

}

# 即座にここに到達

# Taskを通じて状態を追跡可能


【spawn{}との違い】

spawn{} :

  • 完全に独立したタスク
  • 追跡・キャンセル不可

  • branch{} :

  • 構造化されたタスク
  • 親スコープで管理可能
  • キャンセル可能

  • 【使用例】

    BackgroundTask := branch {

    loop {

    Sleep(1.0)

    UpdateScore()

    }

    }

    # 後でキャンセル可能

    # BackgroundTask.Cancel()


    【ベストプラクティス】

  • 追跡が必要ならbranch{}
  • 完全に独立ならspawn{}
  • 構造化並行性を意識する