线程锁

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)

{

  //写你想请求的内容

};

posted @ 2015-09-28 21:18  NSObject/SubViews  阅读(140)  评论(0编辑  收藏  举报