- (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)鍵代碼
}
兩種方式而已。