Insanely неясный 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 всегда возвращает ошибку для меня (Invalid argument). В моем коде мне нужно уменьшить приоритет моего потока обработчика, чтобы убедиться, что другой поток использует больше времени процессора. Или, в качестве альтернативы, я мог бы увеличить приоритет потока моего другого потока, который я хочу использовать как больше процессора по сравнению с другими потоками в моем процессе.
Есть ли у меня способ сделать это? Я использую только собственный код С++.
Изменить: Из этого сообщения видно, что потоки андроида - это какие-то легкие процессы и для изменения приоритетов для них setpriority should использоваться. Похоже, что функция работает (getpriority до и после указывает, что приоритет был изменен). Однако я не вижу ожидаемого эффекта в своем приложении.