Вопрос

В 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» в командной строке.)

Другие советы

Если вы делаете что-то подобное в Unix, вы хотите (от имени пользователя root) выполнить команду chmod и установить бит s.Затем вы можете изменить имя пользователя, приоритет, планирование потоков и т. д.во время выполнения.

Это здорово, пока вы не пишете многопоточное приложение с ошибкой в ​​нем, чтобы вы взяли на себя управление блоком с 48 процессорами, и никто не мог вас выключить, потому что каждый ваш процессор работает на 100%, а для всех потоков установлено значение SHED_FIFO ( работает до завершения) работает от имени пользователя root.

Неа ..Я бы не говорил по опыту....

@ аллен

Можете ли вы понизить приоритет своего процесса, не будучи суперпользователем?

Конечно.Однако имейте в виду, что это улица с односторонним движением.Вы даже не сможете вернуться к тому, с чего начали.И даже довольно небольшое снижение приоритета может иметь поразительно большие последствия для времени работы при значительной нагрузке на систему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top