I’ve been making more use of threads and recently needed to allow two threads (neither of them the main thread) to coordinate with each other. In this particular case I was logging into Parse in one thread and moving some data from the Address Book to Core Data in the other thread. Once both threads completed, I wanted to call a routine that would allow me to communicate with Parse and update some records in the cloud as needed.
As an aside, I wanted to put in a quick plug for Parse. It’s a great service that allows me to persist objects in the cloud, perform queries, etc. The documentation is great and the team has been very responsive on their forums. I hope to write about my experience with Parse more extensively in the future.
Conceptually, it isn’t difficult to think about how to synchronize the completion of the threads before kicking off my update method. I just need to keep a flag somewhere that both threads can check.
@property (nonatomic) BOOL readyForParseUpdate;