Skip to content

Commit 1464174

Browse files
update atomic property to use read write locks (#252)
1 parent c089ef9 commit 1464174

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

Sources/Utils/AtomicProperty.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class AtomicProperty<T> {
2727
return retVal
2828
}
2929
set {
30-
lock.sync {
30+
lock.async(flags: DispatchWorkItemFlags.barrier) {
3131
self._property = newValue
3232
}
3333
}
@@ -36,7 +36,7 @@ class AtomicProperty<T> {
3636
var name = "AtomicProperty" + String(Int.random(in: 0...100000))
3737
let clzzName = String(describing: T.self)
3838
name += clzzName
39-
return DispatchQueue(label: name)
39+
return DispatchQueue(label: name, attributes: .concurrent)
4040
}()
4141

4242
init(property: T) {
@@ -50,7 +50,7 @@ class AtomicProperty<T> {
5050
// perform an atomic operation on the atomic property
5151
// the operation will not run if the property is nil.
5252
public func performAtomic(atomicOperation:((_ prop:inout T) -> Void)) {
53-
lock.sync {
53+
lock.sync(flags: DispatchWorkItemFlags.barrier) {
5454
if var prop = _property {
5555
atomicOperation(&prop)
5656
_property = prop

0 commit comments

Comments
 (0)