Edited at

ひどうきでじっこうする


これはなあに?

ふたつのことを、いっしょにする やり方を勉強(べんきょう)するよ


サッカーをしながら...

例題(れいだい)としてサッカーをしながら、うんこをするやり方を勉強するよ。

まずは、サッカーをするよ

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秒(びょう)後(あと)でうんこできたよ!

やったね!


おしまい

おわりだよ!

ぶりぶりーーー!!!