我在单独的线程(2 到 5)中以 12fps 的速度运行 2d 动画。
每个线程通过“performSelector:withObject:afterDelay”在指定位置在指定时间显示图像
它适用于 1 个动画,但是一旦我有两个或多个线程同时运行 2+ 个动画,动画就会明显变慢。
事实证明,NSThread 花费的时间比指定的要多得多(在 afterDelay 中)
performSelector:withObject:afterDelay
当 2 个以上的线程同时调用“performSelector”时,每个线程每秒大约 12 次。
想知道我是否可以配置 NSThread 以更快地获取 performSelector 排队的消息。
我也想知道是什么减慢了消息的接收速度。也许线程切换很慢?
谢谢
下面是我使用的 threadMain 代码。
- (void) myThreadMain
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
// Add your sources or timers to the run loop and do any other setup.
NSRunLoop *runloop = [NSRunLoop currentRunLoop];
[runloop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
do
{
// Start the run loop but return after each source is handled.
SInt32 result = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 10, YES);
}
while (self.isNeedToExit == false);
[pool release];
SYSLOG(LOG_DEBUG, "thread exiting");
}