Wahnsinnig obskuren Pthread API für Thread Priorität nicht nur unverständlich unverständlich, aber es funktioniert auch nicht nur auf Android.ändern native Thread-Priorität auf Android in C/C++
Also gibt es eine Möglichkeit für mich, die Priorität eines Threads zu reduzieren oder zu erhöhen?
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));
Ausgänge:
sched.sched_priority: 0 currentPolicy: 0
Priorität min/max: 0/0
auch, egal was ich tue, pthread_setschedparam gib immer einen Fehler für mich zurück (ungültiges Argument). In meinem Code muss ich die Priorität meines Handler-Threads reduzieren, um sicherzustellen, dass der andere Thread mehr CPU-Zeit verbraucht. Alternativ könnte ich die Thread-Priorität meines anderen Threads, den ich verwenden möchte, im Vergleich zu anderen Threads in meinem Prozess erhöhen.
Gibt es eine Möglichkeit für mich, das zu tun? Ich verwende nur nativen C++ - Code.
Bearbeiten: Von diesem Beitrag sieht aus wie Android-Threads sind eine Art von leichten Prozessen und Prioritäten für sie ändern setpriority sollte verwendet werden. Es sieht so aus, dass die Funktion funktioniert (GetPriority vorher und nachher zeigt an, dass die Priorität geändert wurde). Allerdings sehe ich in meiner App keinen erwarteten Effekt.
"* ... pthread_setschedparam gibt immer einen Fehler für mich zurück (ungültiges Argument). *", Würde es Ihnen also etwas ausmachen, uns zu zeigen, was Sie in die Funktion eingegeben haben, damit es 'EINVAL' zurückgibt? – alk
für currentPolicy Ich habe versucht, alle verfügbaren Werte (0, 1, 2, 3) zu übergeben. Für sched.sched_priority habe ich versucht verschiedene Werte einzustellen (-10, 10 usw.). Alle scheitern. – Pavel