Я запускаю анимацию 2d при 12 кадрах в секунду в отдельных потоках (от 2 до 5).
Каждое изображение с изображением нити в указанное время в указанном месте «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
Правильно ли я понял вас, что вы рисуете рамки анимации в нескольких фоновых потоках? – Costique