iOS---------- @synchronized(self)的用法

- (void)removeFromQueue:(NSString *)queryString
{
    @synchronized (self)
    {
        if (self.queuedRequests.count)
            [self.queuedRequests removeObject:queryString inRange:(NSRange){0, 1}];
    }
}

1. synchronized 这个主要是考虑多线程的程序,这个指令可以将{ } 内的代码限制在一个线程执行,如果某个线程没有执行完,其他的线程如果需要执行就得等着。

Objective-C除了提供异常处理机制外,还提供了线程同步功能。异常处理在前面的“异常处理”章节有介绍。

@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用。 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。

1. synchronized 这个主要是考虑多线程的程序,这个指令可以将{ } 内的代码限制在一个线程执行,如果某个线程没有执行完,其他的线程如果需要执行就得等着。

Account *account = [AccountaccoutFromString :[accountFiled stringValue]];  
   
//获取信号量  
id accountSemaphore = [Account semaphore];  
@synchronized(accountSemaphore)  
{  
    //关键代码  
}

两种方式而已。

你可能感兴趣的:(iOS---------- @synchronized(self)的用法)