Комментарий предыдущего ответа о Windows, позволяющий пользователям изменять приоритеты на все, что им нужно, частично верен, за исключением пары - во-первых, класс приоритетов в реальном времени обычно не допускается (даже с повышением UAC). Требуется специальный токен безопасности. Этот токен обычно доступен администраторам, но процесс должен запросить его.
Кроме того, по крайней мере в Vista + повышение класс приоритета внешнего процесса является правом, оставленным только для администраторов в политике безопасности по умолчанию. Однако это относится только к ВНЕШНИМ процессам - поэтому это не повлияет на вашу способность устанавливать собственный класс приоритета.
Пожалуйста, имейте в виду, что в Windows при изменении класса приоритета процесса вы меняете «базовый» приоритет всех потоков в этом процессе. Вы можете оставить класс приоритетов в нормальном состоянии и при необходимости настроить приоритеты определенных потоков (API SetThreadPriority против API SetPriorityClass). Это может быть предпочтительным для вашего собственного приложения.
Я не думаю, что это здесь, но предупреждение - если действует на внешний процесс (не свой собственный), никогда не меняет приоритеты отдельных потоков другой процесс. Вместо этого измените только класс приоритетов, чтобы все приоритеты потоков сохраняли одинаковую относительную разницу друг с другом в важности планирования.
Не существует кроссплатформенного способа сделать это, потому что поведение очень отличается. Директивы условной компиляции, как было предложено предыдущим автором, должны использоваться в этой ситуации.