title: Saving NSManagedObjectContext with NSPrivateQueueConcurrencyType
body: <p>Im currently learning how to use core-data in a multithreaded environment; </p>
  
  <p>I therefore created a small project with two <code>NSManagedObjectContext</code>: A main <code>NSManagedObjectContext</code> with <code>NSMainQueueConcurrencyType</code> for reads and its child <code>NSManagedObjectContext</code> with <code>NSPrivateQueueConcurrencyType</code> for create/update/delete operations. </p>
  
  <p>It has often been said that saving an <code>NSManagedObjectContext</code> with <code>NSPrivateQueueConcurrencyType</code> should be done through <code>performBlock:</code> like so:</p>
  
  <pre><code>[context performBlock:^
  {
      Book *mutableBook = [self getMutableVersionOfBook:book];
  
      [context deleteObject:mutableBook];
  
      [context save:nil];
  }];
  </code></pre>
  
  <p>What happens if the <code>performBlock:</code> is omitted, like so:</p>
  
  <pre><code>Book *mutableBook = [self getMutableVersionOfBook:book];
  
  [context deleteObject:mutableBook];
  
  [context save:nil];
  </code></pre>
  
  <p>Does the save then happen on the thread the save was called on? What can happen if <code>performBlock:</code> isn't used?</p>