0
我在单独的线程(2到5)中以12fps运行2d动画。
每个线程在指定位置通过“performSelector:withObject:afterDelay”在指定位置显示图像
对于1个动画可以正常工作,但一旦有两个或多个线程同时运行2+动画,动画会变慢明显下降。加速NSThread消息传递
事实证明,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");
}
如果这是iPhone(标记为):你能告诉我为什么(特别是)五个工作线程比你的情况更好吗? (在一些情况下,多于一个可能有用) – justin 2011-02-07 07:07:42