LoginSignup
5
0

More than 5 years have passed since last update.

ひどうきでじっこうする

Last updated at Posted at 2018-12-22

これはなあに?

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

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

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

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

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

おしまい

おわりだよ!

ぶりぶりーーー!!!

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0