美文网首页技术好文
iOS---------- @synchronized(self

iOS---------- @synchronized(self

作者: BernardChina | 来源:发表于2018-04-26 19:38 被阅读31次
    - (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

        本文链接:https://www.haomeiwen.com/subject/stwmlftx.html