1.当多个线程 同时抢夺一个公共资源时,为了防止这个公共资源被同时修改,需要对资源加锁
2.当一个线程对资源加锁之后,只有当前线程可以修改资源内容,其他线程不可以修改.只有在当前线程修改完毕,把锁打开,其他线程才能使用公共资源
实现上述方法的又两种
(1).锁NSLock * _Lock;
(2).同步块@synchronized(self){};
例子如下:
_Lock=[[NSLock alloc]init];
dispatch_queue_t queue= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
// 加上锁
// [_Lock lock];
if (_totalTickets>=1)
{
_totalTickets=_totalTickets-1;
}
// 打开锁
// [_Lock unlock];
});
2.把队列中的内容写入到同步快中去
@synchronized(self)
{
//写你想请求的内容
};