В Windows я могу:
HANDLE hCurrentProcess = GetCurrentProcess();
SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);
Как я могу сделать то же самое на * nix?
Можно ли снизить приоритет собственного процесса, не будучи суперпользователем?
Да, хотя обычно вы не можете поднять его снова.





Пытаться:
#include <sys/time.h>
#include <sys/resource.h>
int main(){
setpriority(PRIO_PROCESS, 0, -20);
}
Обратите внимание, что вы должны работать как суперпользователь, чтобы это работало.
(для получения дополнительной информации введите в командной строке man setpriority.)
@ allain
Can you lower your own process' priority without being superuser?
Конечно. Однако имейте в виду, что это улица с односторонним движением. Вы даже не можете вернуться к тому, с чего начали. И даже довольно небольшое снижение приоритета может иметь поразительно большое влияние на время работы при значительной нагрузке на систему.
Если вы делаете что-то подобное в unix, вы хотите (как root) выполнить chmod и установить бит s. Затем вы можете изменить то, от кого вы работаете, каков ваш приоритет, планирование потоков и т. д. Во время выполнения.
Это здорово, если вы не пишете многопоточное приложение с ошибкой в нем, так что вы берете на себя 48 процессоров, и никто не может вас выключить, потому что у вас каждый процессор вращается на 100% со всем потоком, установленным на SHED_FIFO ( выполняется до завершения) под управлением root.
Нет .. Я бы не стал говорить по опыту ....