NSLocking+Extensions.swift 402 B

123456789101112131415161718192021222324
  1. import Foundation
  2. extension NSLocking {
  3. func perform<T>(_ block: () throws -> T) rethrows -> T {
  4. lock()
  5. defer { unlock() }
  6. return try block()
  7. }
  8. }
  9. extension NSRecursiveLock {
  10. convenience init(label: String) {
  11. self.init()
  12. name = label
  13. }
  14. }
  15. extension NSLock {
  16. convenience init(label: String) {
  17. self.init()
  18. name = label
  19. }
  20. }