Основные данные: родительский контекст блокирует дочерний

Я делаю некоторую фоновую обработку в приложении с основными данными. Фоновая обработка выполняется для дочернего управляемогоObjectContext. Инициализация контекста:

appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

// the moc in appDelegate is created with .MainQueueConcurrencyType
mainThreadMOC = appDelegate.managedObjectContext!
backgroundMOC = NSManagedObjectContext(concurrencyType:NSManagedObjectContextConcurrencyType.PrivateQueueConcurrencyType)
backgroundMOC?.parentContext = mainThreadMOC

Фоновая обработка выполняется следующим способом:

// download all new transaction log entries
func syncItems() {

... set up the query object for parse

let moc = CoreDataStore.sharedInstance.backgroundMOC

// perform download
moc?.performBlock( {
    self.runQuery(query)   // Download stuff und do some core data work
    })
}

Отладчик показывает, что вся работа внутри блока действительно в фоновом потоке.

Когда я вызываю эту функцию из основного потока и немедленно блокирую основной поток (в целях тестирования) с помощью длительной операции с основными данными, я вижу, что фоновый поток останавливается и продолжает выполнение, только когда основной поток простаивает.

// this is called from a view controller in the main thread

syncItems() // should start to work in background
for i in 0...200 {
    // do some core data work in main thread
}
// syncItems starts to work after the blocking for-loop ends.

Почему это происходит?