Сведения о вопросе

rjevskii

10:26, 8th August, 2020

Теги

Изменение приоритета текущего процесса в C

Просмотров: 382   Ответов: 3

На Windows я могу это сделать:

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

Как я могу сделать то же самое на *nix?



  Сведения об ответе

#hash

01:26, 25th August, 2020

Попробуй:

#include <sys/time.h>
#include <sys/resource.h>

int main(){
    setpriority(PRIO_PROCESS, 0, -20);
}

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

(для получения дополнительной информации введите 'man setpriority' в приглашении.)


  Сведения об ответе

DAAA

06:42, 22nd August, 2020

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

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

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


  Сведения об ответе

P_S_S

15:00, 21st August, 2020

@ Аллейн

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться