0
我正在執行一個線程,該線程一直在尋找網站的更新。應該可以在某些視圖中設置刷新率。使用GCD在塊內分配值
更新線程不斷檢查更新的時間間隔。但我想避免比賽條件。 (我連跟GCD擔心這個?)
//This variable is used to avoid race conditions, refreshRate is a instance variable
int threadRefreshRate = refreshRate;
BOOL autoRefresh = YES;
dispatch_async(autoUpdateQueue,^{
while(YES){
NSLog(@"Runs autoupdate thread");
dispatch_async(dispatch_get_main_queue(), ^{
if(autoRefresh){
[self checkForUpdate];
//Trying to set thread variable to avoid race condition
threadRefreshRate = refreshRate;
}
else
NSLog(@"Should not auto refresh");
});
sleep(threadRefreshRate);
}
});
我試圖執行這些代碼。然而,它不能用於在塊中分配「線程」變量。
取消它,所以我沒有在運行一個循環?我需要使用全局隊列嗎? – johan 2011-05-25 10:20:57
@Johan是的,你不必循環運行。我認爲計時器事件也可以在其他隊列中提出。 – 2011-05-25 13:34:47