EngineGame#verse#uefn#verselangtech前回はこちらhttps://zenn.dev/t_tutiya/articles/394e71dab546c2並行処理式の続きです。expression)[1]」はコードブロックを取る並行処理式です。race式のコードブロックには2個以上の非同期式を記述しなければなりません(0~1個だとコンパイルエラー)。sync式と異なり、イミディエイト式を記述する事はできません。race式が評価されると、コードブロック内の非同期式が同時に実行されます。各非同期式のいずれかが処理を完了すると、その時点でrace式は終了し、次の処理に進みます。この時、処理がまだ完了していない(中断している最中の)非同期式はそのまま処理が終了になります(ロールバックと混同しないように注意)。race式は値を返します。返し値は、最初に完了した式になります。結果の型は、コードブロック内の各非同期式を包括出来る型になります。サンプルコードで挙動を確認してみます。前回のコードの"sync"を"race"に差し替えました。race式ではコードブロックにイミディエイト式を記述出来ないので、Print()関数呼び出しをコメントアウトしています。#Print("D")Print("end")Sleep(1.0)実行結果は以下になります。5)が最後まで実行されずにrace式が終了している事が分かります。race式が終了するタイミングに注意してください。expression)[2]」はコードブロックを取る並行処理式です。rush式のコードブロックには2個以上の非同期式を記述しなければなりません(0~1個だとコンパイルエラー)。イミディエイト式を記述する事はできません。rush式が評価されると、コードブロック内の非同期式が同時に実行されます。各非同期式のいずれかが処理を完了すると、その時点でrush式は終了して次の処理に進みます。この時、まだ処理が完了していない(中断している最中の)他の非同期式は、(race式と異なり)引き続き非同期処理を続行します。rush式は値を返します。返し値は、最初に完了した式になります。結果の型は、コードブロック内の各非同期式を包括出来る型になります。"race"を"rush"に差し替えただけです。#Print("D")Print("end")Sleep(1.0)実行結果は以下になります。update"end"が出力される所まではrace式と同じですが、その後もAの処理が続くのが分かります。ちなみに、Sleep(1.0)が無い場合、"end"を出力した時点でOnBegin()関数が完了してしまい、それによってAの処理も終わってしまいます。bruch/spwan/taskについてです。Unityに特化したシェーダープログラミングの技術同人誌シリーズを書いています。Gamesが開発したフォートナイト&メタバース記述プログラミング言語「Verse」を検証しています。バッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフト券が還元されます。分かりやすい記事をありがとうございます。rush式の説明にて表記ミスかもしれないので共有いたします(勘違いでしたらすいません)rush式が評価されると、コードブロック内の非同期式が同時に実行されます。各非同期式のいずれかが処理を完了すると、その時点でrace式は終了し、次の処理に進みます。rush式と異なり、この時まだ処理が完了していない(中断している最中の)非同期式は引き続き非同期処理を続行します。27日前こちら誤記でした&修正しました。Unityに特化したシェーダープログラミングの技術同人誌シリーズを書いています。Gamesが開発したフォートナイト&メタバース記述プログラミング言語「Verse」を検証しています。バッジを贈るバッジを贈るとは?目次race式(構造型並行処理式)rush式(構造型並行処理式)続きZennエンジニアのための情報共有コミュニティAboutZennについて運営会社お知らせ・リリースGuides使い方Publicationよくある質問LinksTwitterGitHubメディアキットLegal利用規約プライバシーポリシ。