@class TSUWeakReference, NSThread, NSCondition, NSMutableDictionary, NSObject, NSMutableArray, TSKAccessControllerRunLoop, TSKRunLoopTicket; @protocol OS_dispatch_semaphore; @interface TSKAccessController : NSObject { TSUWeakReference *_delegate; struct _opaque_pthread_rwlock_t { long long __sig; char __opaque[192]; } _rwLock; BOOL _secondaryThreadWriting; BOOL _thenReadingOnPrimaryThread; NSCondition *_cond; NSMutableDictionary *_signalIdentifiers; NSMutableDictionary *_waitIdentifiers; struct __CFRunLoopSource { } *_primaryThreadPingSource; NSMutableArray *_pendingPrimaryThreadBlocks; struct { struct _opaque_pthread_t *threadId; unsigned int count; struct { unsigned int useCount; id ticket; } ticketInfo; } _readerInfo[64]; struct { unsigned int useCount; id ticket; } _primaryThreadTicketInfo; unsigned int _readerCount; NSMutableArray *_writerQueue; NSObject *_outstandingTicketReadLock; unsigned int _outstandingTicketCount; _Atomic BOOL _writeLockHeld; unsigned long long _writeBlockedPrimaryThreadCount; unsigned long long _primaryThreadWriteCount; _Atomic struct __CFRunLoop *_runLoop; _Atomic BOOL _isOnMainRunLoop; NSThread *_primaryThread; struct os_unfair_lock_s { unsigned int _os_unfair_lock_opaque; } _primaryThreadIVarLock; _Atomic unsigned int _primaryThreadQualityOfServiceClass; _Atomic int _boostPrimaryThreadQualityOfServiceCount; TSKRunLoopTicket *_primaryRunLoopTicket; _Atomic int _performWhileAnotherWaitingThreadHasWriteCount; } @property (readonly) NSThread *primaryThread; @property struct __CFRunLoop { } *runLoop; @property (readonly) BOOL hasRead; @property (readonly) BOOL hasWrite; @property (readonly) BOOL isPrimaryThread; @property (readonly) BOOL isOnMainRunLoop; @property (readonly) BOOL isOnPrimaryRunLoop; @property (readonly) unsigned int primaryThreadQualityOfServiceClass; @property (readonly) TSKAccessControllerRunLoop *primaryRunLoop; - (id)init; - (void)dealloc; - (id)initWithDelegate:(id)a0; - (void)p_signalThread:(id)a0; - (void)p_dequeueWrite; - (BOOL)p_hasRead; - (BOOL)p_hasWrite; - (void)p_readLock; - (void)p_readUnlock; - (id)p_threadIdentifier; - (BOOL)p_waitWithCondition:(id)a0 untilDate:(id)a1; - (void)p_writeUnlock; - (void)performRead:(id /* block */)a0; - (void)performWrite:(id /* block */)a0; - (void)signalIdentifier:(id)a0; - (void)waitOnIdentifier:(id)a0; - (BOOL)waitOnIdentifier:(id)a0 untilDate:(id)a1 releaseReadWhileWaiting:(BOOL)a2; - (void)performReadWithTicket:(id)a0 block:(id /* block */)a1; - (void)assertHasWrite; - (void)performWrite:(id /* block */)a0 blockPrimaryThread:(BOOL)a1; - (void)performReadAllowingOverlappingImplicitRead:(id /* block */)a0 thenWrite:(id /* block */)a1 thenReadOnPrimaryThread:(id /* block */)a2; - (void)assertHasReadOrWrite; - (void)addPrimaryThreadRunLoopSource:(struct __CFRunLoopSource { } *)a0 mode:(struct __CFString { } *)a1; - (void)assertHasRead; - (id)boostPrimaryThreadQualityOfService; - (void)dispatchAsyncOnPrimaryThreadInMode:(struct __CFString { } *)a0 block:(id /* block */)a1; - (void)i_finishReadForTicket:(id)a0; - (void)i_startReadForTicket:(id)a0; - (id)initWithPrimaryRunloop:(struct __CFRunLoop { } *)a0 delegate:(id)a1; - (void)p_asyncPerformBlockOnPrimaryThread:(id /* block */)a0; - (void)p_blockPrimaryThread; - (void)p_blockPrimaryThreadForWrite; - (void)p_decrementCountForReaderAtIndex:(unsigned int)a0 releasingRealLock:(BOOL)a1; - (void)p_didAcquireReadLock; - (void)p_didAcquireWriteLock; - (void)p_didEndBoostingPrimaryThread; - (void)p_enqueueWriteAndBlockAllowingPendingWrites:(BOOL)a0; - (void)p_finishReadForTicketInfo:(struct { unsigned int x0; id x1; } *)a0; - (void)p_flushPendingPrimaryThreadBlocksQueueAcquiringLock:(BOOL)a0; - (void)p_performRead:(id /* block */)a0 eagerlyBlockingPrimaryThread:(BOOL)a1 thenWrite:(id /* block */)a2 allowingPendingWrites:(BOOL)a3 thenReadOnPrimaryThread:(id /* block */)a4; - (void)p_performReadOnPrimaryThread:(id /* block */)a0 result:(BOOL)a1; - (void)p_readLockTakingRealLock:(BOOL)a0; - (void)p_readUnlockReleasingRealLock:(BOOL)a0; - (void)p_schedulePrimaryThreadRead:(id /* block */)a0 result:(BOOL)a1; - (void)p_setPrimaryThreadIfNeeded; - (void)p_signalPrimaryThreadWriteComplete; - (struct { unsigned int x0; id x1; } *)p_ticketInfoForCurrentThread; - (struct { unsigned int x0; id x1; } *)p_ticketInfoForTicket:(id)a0; - (void)p_unblockPrimaryThread; - (void)p_willAcquireReadLock; - (void)p_willAcquireWriteLock; - (void)p_willRelinquishReadLock; - (void)p_willRelinquishWriteLock; - (void)p_writeLockAndBlockPrimaryThread:(BOOL)a0; - (unsigned long long)p_writerQueueIndexOfThreadIdentifier:(id)a0; - (void)performRead:(id /* block */)a0 thenWrite:(id /* block */)a1 thenReadOnPrimaryThread:(id /* block */)a2; - (void)performRead:(id /* block */)a0 thenWriteBeforePendingWrites:(id /* block */)a1 thenReadOnPrimaryThread:(id /* block */)a2; - (void)performReadGrantingTicket:(id /* block */)a0; - (void)performWhileAnotherWaitingThreadHasWrite:(id /* block */)a0; - (void)removePrimaryThreadRunLoopSource:(struct __CFRunLoopSource { } *)a0 mode:(struct __CFString { } *)a1; - (void)wakeUpPrimaryRunLoop; @end