Threading is a complex problem in applications. Adding Core Data to the mix doesn't make it easier. However, if you follow some rules you can perform Core Data operations on Background queues without too much trouble.