Stopped using dispatch_sync in favor of NSRecursiveLock in order to
maintain the current behavior minus the deadlock issues associated with
dispatch_sync.