@@ -80,9 +80,9 @@ open class Operation : NSObject {
80
80
81
81
open func cancel( ) {
82
82
lock. lock ( )
83
- defer { lock. unlock ( ) }
84
83
_cancelled = true
85
84
_leaveGroups ( )
85
+ lock. unlock ( )
86
86
}
87
87
88
88
open var isExecuting : Bool {
@@ -104,35 +104,35 @@ open class Operation : NSObject {
104
104
105
105
open func addDependency( _ op: Operation ) {
106
106
lock. lock ( )
107
- defer { lock. unlock ( ) }
108
107
_dependencies. insert ( op)
109
108
op. lock. lock ( )
110
- defer { op. lock. unlock ( ) }
111
109
#if DEPLOYMENT_ENABLE_LIBDISPATCH
112
110
_depGroup. enter ( )
113
111
op. _groups. append ( _depGroup)
114
112
#endif
113
+ op. lock. unlock ( )
114
+ lock. unlock ( )
115
115
}
116
116
117
117
open func removeDependency( _ op: Operation ) {
118
118
lock. lock ( )
119
- defer { lock. unlock ( ) }
120
119
_dependencies. remove ( op)
121
120
op. lock. lock ( )
122
- defer { op. lock. unlock ( ) }
123
121
#if DEPLOYMENT_ENABLE_LIBDISPATCH
124
122
let groupIndex = op. _groups. index ( where: { $0 === self . _depGroup } )
125
123
if let idx = groupIndex {
126
124
let group = op. _groups. remove ( at: idx)
127
125
group. leave ( )
128
126
}
129
127
#endif
128
+ op. lock. unlock ( )
129
+ lock. unlock ( )
130
130
}
131
131
132
132
open var dependencies : [ Operation ] {
133
133
lock. lock ( )
134
- defer { lock. unlock ( ) }
135
134
let ops = _dependencies. map ( ) { $0 }
135
+ lock. unlock ( )
136
136
return ops
137
137
}
138
138
@@ -189,14 +189,14 @@ open class BlockOperation: Operation {
189
189
190
190
open func addExecutionBlock( _ block: @escaping ( ) -> Void ) {
191
191
lock. lock ( )
192
- defer { lock. unlock ( ) }
193
192
_executionBlocks. append ( block)
193
+ lock. unlock ( )
194
194
}
195
195
196
196
open var executionBlocks : [ ( ) -> Void ] {
197
197
lock. lock ( )
198
- defer { lock. unlock ( ) }
199
198
let blocks = _executionBlocks
199
+ lock. unlock ( )
200
200
return blocks
201
201
}
202
202
}
@@ -308,8 +308,8 @@ open class OperationQueue: NSObject {
308
308
// However this is considerably faster and probably more effecient.
309
309
internal var _underlyingQueue : DispatchQueue {
310
310
lock. lock ( )
311
- defer { lock. unlock ( ) }
312
311
if let queue = __underlyingQueue {
312
+ lock. unlock ( )
313
313
return queue
314
314
} else {
315
315
let effectiveName : String
@@ -333,6 +333,7 @@ open class OperationQueue: NSObject {
333
333
queue. suspend ( )
334
334
}
335
335
__underlyingQueue = queue
336
+ lock. unlock ( )
336
337
return queue
337
338
}
338
339
}
@@ -353,8 +354,8 @@ open class OperationQueue: NSObject {
353
354
354
355
internal func _dequeueOperation( ) -> Operation ? {
355
356
lock. lock ( )
356
- defer { lock. unlock ( ) }
357
357
let op = _operations. dequeue ( )
358
+ lock. unlock ( )
358
359
return op
359
360
}
360
361
@@ -426,9 +427,9 @@ open class OperationQueue: NSObject {
426
427
427
428
internal func _operationFinished( _ operation: Operation ) {
428
429
lock. lock ( )
429
- defer { lock. unlock ( ) }
430
430
_operations. remove ( operation)
431
431
operation. _queue = nil
432
+ lock. unlock ( )
432
433
}
433
434
434
435
open func addOperation( _ block: @escaping ( ) -> Swift . Void ) {
@@ -440,16 +441,16 @@ open class OperationQueue: NSObject {
440
441
// WARNING: the return value of this property can never be used to reliably do anything sensible
441
442
open var operations : [ Operation ] {
442
443
lock. lock ( )
443
- defer { lock. unlock ( ) }
444
444
let ops = _operations. map ( ) { $0 }
445
+ lock. unlock ( )
445
446
return ops
446
447
}
447
448
448
449
// WARNING: the return value of this property can never be used to reliably do anything sensible
449
450
open var operationCount : Int {
450
451
lock. lock ( )
451
- defer { lock. unlock ( ) }
452
452
let count = _operations. count
453
+ lock. unlock ( )
453
454
return count
454
455
}
455
456
@@ -462,7 +463,6 @@ open class OperationQueue: NSObject {
462
463
}
463
464
set {
464
465
lock. lock ( )
465
- defer { lock. unlock ( ) }
466
466
if _suspended != newValue {
467
467
_suspended = newValue
468
468
#if DEPLOYMENT_ENABLE_LIBDISPATCH
@@ -475,24 +475,25 @@ open class OperationQueue: NSObject {
475
475
}
476
476
#endif
477
477
}
478
+ lock. unlock ( )
478
479
}
479
480
}
480
481
481
482
internal var _name : String ?
482
483
open var name : String ? {
483
484
get {
484
485
lock. lock ( )
485
- defer { lock. unlock ( ) }
486
486
let val = _name
487
+ lock. unlock ( )
487
488
return val
488
489
}
489
490
set {
490
491
lock. lock ( )
491
- defer { lock. unlock ( ) }
492
492
_name = newValue
493
493
#if DEPLOYMENT_ENABLE_LIBDISPATCH
494
494
__underlyingQueue = nil
495
495
#endif
496
+ lock. unlock ( )
496
497
}
497
498
}
498
499
@@ -503,14 +504,14 @@ open class OperationQueue: NSObject {
503
504
open var underlyingQueue : DispatchQueue ? {
504
505
get {
505
506
lock. lock ( )
506
- defer { lock. unlock ( ) }
507
507
let queue = __underlyingQueue
508
+ lock. unlock ( )
508
509
return queue
509
510
}
510
511
set {
511
512
lock. lock ( )
512
- defer { lock. unlock ( ) }
513
513
__underlyingQueue = newValue
514
+ lock. unlock ( )
514
515
}
515
516
}
516
517
#endif
0 commit comments