Skip to content

Commit 891cef9

Browse files
committed
improved usage of lock
1 parent 119ee1c commit 891cef9

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

Sources/TSCBasic/FileSystem.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -787,16 +787,16 @@ public class InMemoryFileSystem: FileSystem {
787787
}
788788

789789
public func withLock<T>(on path: AbsolutePath, type: FileLock.LockType = .exclusive, _ body: () throws -> T) throws -> T {
790-
var fileQueue: DispatchQueue
791790

792-
lockFilesLock.lock()
793-
if let queueReference = lockFiles[path], let queue = queueReference.reference {
794-
fileQueue = queue
795-
} else {
796-
fileQueue = DispatchQueue(label: "org.swift.swiftpm.in-memory-file-system.file-queue", attributes: .concurrent)
797-
lockFiles[path] = WeakReference(fileQueue)
791+
let fileQueue: DispatchQueue = lockFilesLock.withLock {
792+
if let queueReference = lockFiles[path], let queue = queueReference.reference {
793+
return queue
794+
} else {
795+
let queue = DispatchQueue(label: "org.swift.swiftpm.in-memory-file-system.file-queue", attributes: .concurrent)
796+
lockFiles[path] = WeakReference(queue)
797+
return queue
798+
}
798799
}
799-
lockFilesLock.unlock()
800800

801801
return try fileQueue.sync(flags: type == .exclusive ? .barrier : .init() , execute: body)
802802
}

0 commit comments

Comments
 (0)