カルボナーラ街道

計測と観察

Swift Concurrency 何秒かかる?クイズ 3問

実行環境

>swift --version
swift-driver version: 1.90.11.1 Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
Target: arm64-apple-macosx14.0

>xcodebuild -version
Xcode 15.3
Build version 15E204a

モチベーション

tokizuoh.hatenablog.com

以前Swift Concurrencyメインスレッドクイズを書いたが、まだまだ理解が浅いなと思って関連のWWDCのセッションを見返したりswift-evolutionを読んでクイズを新たに作った。クイズ作ると定着している感じがあって良い。今回は前回と比べて簡単め。

Question 1

gist.github.com

答えと解説

答え

約7秒

解説

await キーワードによって処理が終わるまで下には進まずに上から順に実行される。よって、Task.sleep(nanoseconds:) の秒数の合計の7秒となる。

Question 2

gist.github.com

答えと解説

答え

約5秒

解説

async let バインディングawait キーワードによって、戻り値が代入されるタイミングまで処理を待つため、Task.sleep(nanoseconds:) の秒数の最大値の5秒となる。

Question 3

gist.github.com

答えと解説

答え

約0秒

解説

await キーワードが無く、 Task.sleep(nanoseconds:) の完了を待たずにメソッドの処理が終わってしまうため、0秒となる。