これはなあに?
ふたつのことを、いっしょにする やり方を勉強(べんきょう)するよ
サッカーをしながら...
例題(れいだい)としてサッカーをしながら、うんこをするやり方を勉強するよ。
まずは、サッカーをするよ
func サッカーをする() {
for i in 0..<10000 {
guard i % 231 == 0 else { continue }
Array(repeating: "ドリブル", count: 10)
.forEach { print($0) }
print("シュート!")
}
}
ドリブルとシュートをするよ。
つぎは、うんこをするよ
func うんこする() {
print("ぶりぶりーーー!!!")
}
ぶりぶりーー!!!
やってみよう!
じゃあさっそくやってみよう
サッカーをする()
うんこする()
実行(じっこう)例(れい)
(しょうりゃく)
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
シュート!
ぶりぶりーーー!!!
あれーー???
これだとサッカーの後(あと)でうんこするだぞ???
非同期(ひどうき)実行(じっこう)
こういう時に使うのが非同期(ひどうき)実行(じっこう)だよ。
難(むずか)しい漢字(かんじ)だけど、おぼえようね。
さっそく作ってみよう。
let dispatchQueue = DispatchQueue(label: "queue", attributes: .concurrent)
func 非同期で(_ f: @escaping () -> Void) {
dispatchQueue.async(execute: f)
}
これでふたつのことが一緒(いっしょ)にできるよ。
やってみよう
さっそうくやってみよう。
非同期で(サッカーをする)
うんこする()
実行(じっこう)例(れい)
ドリブル
ぶりぶりーーー!!!
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
シュート!
(しょうりゃく)
やったー!
サッカーしながらうんこできたよ!
遅延(ちえん)実行(じっこう)
サッカーしながらうんこできたけど、すぐにうんこするのじゃなくて、すこしたってからうんこするようにしたい。
これを遅延(ちえん)実行(じっこう)というよ。
非同期(ひどうき)実行(じっこう)のおともだちだよ。
ちょっとだけトリッキーにするよ。
struct ちえん {
let びょう: Int
func 後で(_ f: @escaping () -> Void) {
DispatchQueue.global().asyncAfter(deadline: .now() + Double(びょう), execute: f)
}
}
extension Int {
var びょう: ちえん {
return ちえん(びょう: self)
}
}
やってみよう
さっそく、使ってみよう!
非同期で(サッカーをする)
1.びょう.後で(うんこする)
実行(じっこう)例(れい)
(しょうりゃく)
ドリブル
ドリブル
ドリブル
ドリブル
シュート!
ドリブル
ぶりぶりーーー!!!
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
ドリブル
シュート!
(しょうりゃく)
サッカーを始(はじ)めて1秒(びょう)後(あと)でうんこできたよ!
やったね!
おしまい
おわりだよ!
ぶりぶりーーー!!!