NSConditon
作为一个锁和一个线程检查器:锁主要为了当检测条件时保护数据源,执行条件引发的任务;线程检查器主要是根据条件决定是否继续运行线程,即线程是否被阻塞
NSConditon *condition =[ [NSCondition alloc]]init;
[condition lock];//锁住当前线程 其他线程的命令需要在lock 外等待,只到unlock ,才可访问
[condition unlock];//解锁当前线程
[condition wait];//让当前线程处于等待状态
[condition signal];//CPU发信号告诉其他线程不用等待,可以继续执行
dispatch_async(dispatch_queue_create("queue", 0), ^{
[condition lock];
if(ind<index){
[condition wait];
}
index = ind;
[condition unlock];
[condition signal];
});
NSLock
某个线程A调用lock方法。这样,NSLock将被上锁。可以执行“关键部分”,完成后,调用unlock方法。如果,在线程A 调用unlock方法之前,另一个线程B调用了同一锁对象的lock方法。那么,线程B只有等待。直到线程A调用了unlock。
NSLock *lock = [[NSLock alloc] init];
[lock lock];
[obj method2];
[lock unlock];