問題文:すべてのバックエンド処理を行う1つのセカンダリスレッドがあります。このセカンダリスレッドでは、実行する別のNSRunLoopを作成しました。我々は作成してNSRunLoopが長い遅延の後にセレクタを呼び出す
NSAutoreleasePool *myPool = [[NSAutoreleasePool alloc] init];
NSRunLoop * threadRL = [NSRunLoop currentRunLoop];
[threadRL addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[threadRL run];
[myPool release];
すべてのものを実行するために、ほぼ10秒を取っているセレクタへの呼び出しの1を除いて正常に動作され、この実行ループでタイマーを使用し、これは毎回ランダムに起こりません。
[myclass performSelector:@selector(func) onThread:myThread withObject:nil waitUntilDone:NO];
私もこれを差し替えませんでした。私はおそらく、このくらいの時間がかかることがありFUNCで任意のタスクを致しておりません
[myclass performSelector:@selector(func) onThread:myThread withObject:nil waitUntilDone:NO modes:[NSArray arrayWithObjects: NSDefaultRunLoopMode, NSRunLoopCommonModes,nil]];
は、
私は何を考えていると、別のモードで実行ループである可能性があるかもしれないということです。
ファンドを最高優先順位で実行する方法、つまり実行中に実行されているものが中断されるなどの方法がありますか?
このランロップにはタイマーが付いています。スレッド上の他の多くのperformselectorが動作していますが、このfuncでは長い遅延が必要です。その理由は、実行ループが何かを処理している可能性がありますが、私の要件はfunc ASAPを非常に高い優先順位で処理することです。 –