Я запускаю 2d анимацию со скоростью 12 кадров в секунду в отдельных потоках (от 2 до 5).
Каждый поток отображает изображение в указанное время в указанном месте с помощью "executeSelector: withObject: afterDelay"
Работает нормально для 1анимации, но если у меня есть два или более потоков для одновременного запуска 2+ анимаций, анимация заметно замедляется.
Оказывается, что NSThread занимает намного больше времени, чем указано (в afterDelay)
performSelector:withObject:afterDelay
когда 2+ потока вызывают 'executeSelector' одновременно примерно 12 раз в секунду на поток.
Интересно, смогу ли я настроить NSThread для более быстрого получения сообщений, поставленных в очередь с помощью executeSelector.
Мне также интересно, что замедляет процесс приема сообщений.может быть, переключение потоков происходит медленно?
Спасибо
Ниже приведен код основного потока, который я использую.
- (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");
}