0
你將如何去保護cocos2d中的共享資源,以便一次只允許一個類或方法訪問或更改它?我最初雖然是建立一個處理鎖定/解鎖協調如下一類:遊戲編程:關鍵區域保護
- (BOOL)requestLock {
if (self.lockAvailable == YES) {
self.lockAvailable = NO;
return YES;
}
return NO;
}
- (void)returnLock:(CGFloat)time {
self.timer = 0;
self.timeToUnlock = time;
}
- (void)update:(CGFloat)dt {
self.timer += dt;
if (self.timer > self.timeToUnlock) {
self.lockAvailable = YES;
}
}
@end
,但它只是似乎沒有被工作正常。在我的其中一個類抓取一個鎖之後,它調用執行一些操作,然後returnLock
預計該操作需要很長時間。然而,結果是意想不到的,因爲看起來像任何其他類試圖請求一個鎖可以這樣做,無論解鎖前提供的時間。我在這裏有缺陷嗎?
另一個說明:這會在某些時候最終變得非常低效嗎?我有大約3個類嘗試每次更新都訪問相同的資源。每次他們一遍又一遍地調用'requestLock'。
問題在於其他地方,那麼,因爲它的所有cocos2d預定更新。 UIGestures線程安全嗎?這可能是問題所在 – Clev3r 2013-04-22 02:17:54