1

Xcode 4 iPad シミュレーターで、NSThread +setThreadPriority を実行してから threadPriority をチェックすると、設定内容に関係なく、結果は常に 0.5 になります。(+setThreadPriority は YES/「成功」の戻りコードを返します。)

これは純粋にシミュレーターの問題ですか、それとも単に setThreadPriority が機能しないのでしょうか?

(「バックグラウンド」スレッドに強制的にCPUを譲る方法を見つけようとしています.pthread_yield_npは、少なくともシミュレーターでは機能していないようです。)

追加: どうやらシミュレーターはかなり脳死状態です。「バックグラウンド」スレッドで 5 秒間スリープしても、メイン スレッドは実行できません。(メイン スレッドは@synchronizeロックを待機しており、「バックグラウンド」スレッドは「ロック インスタンスの取得」コード内にあり、実際にロックを取得する前に行われます。)

(それを除いて、ため息、「バックグラウンド」スレッドには再帰的なロックがあるかもしれません。それをテストする方法があるのだろうか?)

さらに追加:うん、問題はシミュレーターでスレッドを切り替えることができないことではなく、このアプリには長時間実行されているバックグラウンド スレッドに再帰的なロックがいくつかあり、それらのロック (スタックの初期段階) がロックを保持しているという事実です。メインスレッド。思考が必要。

(しかし、setThreadPriorityがシミュレーターで機能しないことは明らかです。)

4

0 に答える 0