Swiftpack.co - grype/RWLock-Swift as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by grype.
grype/RWLock-Swift 1.0.0
Read-Write lock in Swift
⭐️ 1
🕓 3 years ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/grype/RWLock-Swift.git", from: "1.0.0")

RWLock

Swift wrapper around pthread_rwlock.

See Read-Write Lock for details.

Usage:

let lock = RWLock()
lock.readProtected {
    // do something concurrently with other reads and until write lock is acquired 
}
lock.writeProtected {
    // do something that requires exclusive access
}

Using propety wrapper:

class Foo {
    @RWLocked var items = [Any](https://raw.github.com/grype/RWLock-Swift/main/)
    
    func add(_ item: Any) {
        items.append(item)
    }
    
    func removeAll() {
        items.removeAll()
    }
    
    func iterate() {
        items.forEach { 
            // do something with each item
        }
    }
    
}

Any modifications to items array will require write protection - this applies to methods add(_:) and removeAll(). In contrast, iterate()ing over the array requires read access. This means that you won't be able to add(_:) or removeAll() until iteration is complete, and you won't be able to iterate() until add(_:) or removeAll() had finished.

GitHub

link
Stars: 1
Last commit: 3 years ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics