in this case, you would consider using a read/write lock. Cocoa doesn't provide them, but pthread_rwlock_t is available in pthreads interfaces -- declared in pthread.h. note that this is going to be much more efficient (for your usage) than @synchronized, or even a plain lock.