изменить приоритет нити на Android в c / c ++

Безумно скрытый pthread api для приоритета потоков не только невероятно непостижим, но и не работает на Android.

Итак, есть ли способ уменьшить или увеличить приоритет потока?

int currentPolicy;
struct sched_param sched;
status = pthread_getschedparam(pthread_self(), &currentPolicy, &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 всегда возвращает ошибку для меня (неверный аргумент). В моем коде мне нужно уменьшить приоритет потока моего обработчика, чтобы убедиться, что другой поток использует больше процессорного времени. Или, в качестве альтернативы, я мог бы повысить приоритет другого моего потока, который я хочу использовать, как большее количество процессоров по сравнению с другими потоками в моем процессе.

Есть ли для меня способ сделать это? Я использую только собственный код C ++.

Редактировать: Из этого поста похоже, что темы андроида представляют собой какие-то легковесные процессы и для них изменяются приоритетыУстановить приоритет должен быть использован. Похоже, что функция работает (getpriority до и после указывает, что приоритет был изменен). Тем не менее, я не вижу ожидаемого эффекта в моем приложении.

Ответы на вопрос(3)

Ваш ответ на вопрос