Постановка проблемы: у нас есть один вторичный поток, в котором мы выполняем всю внутреннюю обработку. В этом вторичном потоке мы создали отдельный NSRunLoop для запуска. мы создаем и используем таймер в этом цикле выполнения
NSAutoreleasePool *myPool = [[NSAutoreleasePool alloc] init];
NSRunLoop * threadRL = [NSRunLoop currentRunLoop];
[threadRL addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[threadRL run];
[myPool release];
Все работает нормально, за исключением того, что один из вызовов селектора выполняется почти 10 секунд, и это происходит случайным образом не каждый раз.
[myclass performSelector:@selector(func) onThread:myThread withObject:nil waitUntilDone:NO];
Я пробовал это также без разницы.
[myclass performSelector:@selector(func) onThread:myThread withObject:nil waitUntilDone:NO modes:[NSArray arrayWithObjects: NSDefaultRunLoopMode, NSRunLoopCommonModes,nil]];
Я не выполняю никаких задач в func, которые могли бы занять так много времени,
Я думаю, что возможно, что runloop находится в другом режиме.
Есть ли способ заставить фонд выполняться с наивысшим приоритетом, то есть то, что когда-либо выполнялось в цикле выполнения, было прервано или что-то в этом роде.