NSLock *m = [[NSLock alloc] init]; [m lock]; // locks in blocking mode if ([m tryLock]) { // acquire a lock -- does not block if not acquired // lock acquired } else { // already locked, does not block } [m unlock];