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

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

1. synchronized 這個主要是考慮多線程的程序,這個指令可以將{ } 內(nèi)的代碼限制在一個線程執(zhí)行,如果某個線程沒有執(zhí)行完,其他的線程如果需要執(zhí)行就得等著。

Objective-C除了提供異常處理機制外,還提供了線程同步功能。異常處理在前面的“異常處理”章節(jié)有介紹。

@synchronized 的作用是創(chuàng)建一個互斥鎖,保證此時沒有其它線程對self對象進行修改。這個是objective-c的一個鎖定令牌,防止self對象在同一時間內(nèi)被其它線程訪問,起到線程的保護作用。 一般在公用變量的時候使用,如單例模式或者操作類的static變量中使用。

1. synchronized 這個主要是考慮多線程的程序,這個指令可以將{ } 內(nèi)的代碼限制在一個線程執(zhí)行,如果某個線程沒有執(zhí)行完,其他的線程如果需要執(zhí)行就得等著。

Account *account = [AccountaccoutFromString :[accountFiled stringValue]];  
   
//獲取信號量  
id accountSemaphore = [Account semaphore];  
@synchronized(accountSemaphore)  
{  
    //關(guān)鍵代碼  
}

兩種方式而已。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容