スレッド優先度のための非常にあいまいな pthread api は、非常に理解できないだけでなく、android では機能しません。
それで、スレッドの優先度を下げたり上げたりする方法はありますか?
int currentPolicy;
struct sched_param sched;
status = pthread_getschedparam(pthread_self(), ¤tPolicy, &sched);
printf("sched.sched_priority:%d currentPolicy:%d", sched.sched_priority, currentPolicy);
printf("priority min/max:%d/%d", sched_get_priority_min(currentPolicy), sched_get_priority_max(currentPolicy));
出力:
sched.sched_priority:0 currentPolicy:0
優先度の最小/最大:0/0
また、何をしても、 pthread_setschedparam は常にエラーを返します (無効な引数)。私のコードでは、ハンドラー スレッドの優先順位を下げて、他のスレッドがより多くの CPU 時間を使用するようにする必要があります。または、代わりに、プロセス内の他のスレッドと比較して、より多くの CPU として使用したい他のスレッドのスレッド優先度を上げることもできます。
それを行う方法はありますか?ネイティブの C++ コードのみを使用します。
編集:この投稿から、アンドロイドのスレッドはある種の軽量プロセスであり、それらの優先度を変更するにはsetpriorityを使用する必要があるようです。関数が機能しているように見えます (前後の getpriority は優先度が変更されたことを示します)。ただし、アプリで期待される効果が見られません。