Make shared CA transaction queue variable extern so it's actually shared (#1397)

This commit is contained in:
Adlai Holler 2019-03-12 08:22:21 -07:00 committed by GitHub
parent 5490d4d1fa
commit abe46b08a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 5 deletions

View File

@ -68,13 +68,14 @@ AS_SUBCLASSING_RESTRICTED
@end
extern ASCATransactionQueue *_ASSharedCATransactionQueue;
extern dispatch_once_t _ASSharedCATransactionQueueOnceToken;
NS_INLINE ASCATransactionQueue *ASCATransactionQueueGet(void) {
static ASCATransactionQueue *q;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
q = [[ASCATransactionQueue alloc] init];
dispatch_once(&_ASSharedCATransactionQueueOnceToken, ^{
_ASSharedCATransactionQueue = [[ASCATransactionQueue alloc] init];
});
return q;
return _ASSharedCATransactionQueue;
}
@interface ASDeallocQueue : NSObject

View File

@ -354,6 +354,9 @@ ASSynthesizeLockingMethodsWithMutex(_internalQueueLock)
// but after most other scheduled work on the runloop has processed.
static int const kASASCATransactionQueueOrder = 1000000;
ASCATransactionQueue *_ASSharedCATransactionQueue;
dispatch_once_t _ASSharedCATransactionQueueOnceToken;
- (instancetype)init
{
if (self = [super init]) {