私は別のスレッド(2〜5)で12fpsで2dアニメーションを実行しています。
"performSelector:withObject:afterDelay"によって指定された位置に指定された時刻に各スレッドが表示される画像
1つのアニメーションで正常に動作しますが、同時に2つ以上のスレッドを実行すると、アニメーションは遅くなります顕著に低下する。NSThreadメッセージの受け渡しを高速化する
それ2+のスレッドがスレッドごとに毎秒12回の周りに同時に「performSelector」を呼び出しているときNSThreadは(afterDelayに)
performSelector:withObject:afterDelay
を指定したよりもはるかに時間がかかることが判明。
performSelectorでキューに入れられたメッセージを高速に取り出せるようにNSThreadを構成できるかどうかを知りたいですか?
また、メッセージピックアップを遅くしているのも不思議です。多分スレッドの切り替えが遅いですか?
は以下
は、私が使用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用の場合(タグ付き):あなたのケースで(特に)5つのワーカースレッドが1つより優れている理由を教えてください。 (複数のものが便利な場合もあります) – justin
アニメーションフレームをいくつかのバックグラウンドスレッドで描画することを正しく理解しましたか? – Costique