iOS
Swift

Boolによる簡易排他制御

More than 1 year has passed since last update.

連続して同じ処理が走らないようにBoolを使った排他制御をすることがあると思います。そういったケースで使えるプチ便利なクラスを書きました。

class BooleanLock {

    private var doing = false

    func withLock(_ f: (@escaping () -> Void) -> Void) {
        if doing { return }

        doing = true
        f(unlock)
    }

    private func unlock() {
        doing = false
    }
}

使い方

class BooleanLockTest {

    ...

    private let fetching = BooleanLock()

    ...

    func doFetch() {
        fetching.withLock { unlock in
            // do something
            // ...

            unlock()
        }
    }    
}

以上