在C中更改当前进程的优先级
时间:2020-03-05 18:43:40 来源:igfitidea点击:
在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"。)
回答
@阿兰
Can you lower your own process' priority without being superuser?
当然。但是请注意,这是一条单向街。我们甚至无法回到起点。当系统负载很大时,即使是很小的优先级降低也会对运行时间产生惊人的巨大影响。
回答
如果要在Unix下做这样的事情,我们想(以root身份)使用chmod,我们需要设置并设置s位。然后,我们可以在运行时更改谁的运行身份,优先级,线程调度等。
只要我们不编写包含错误的大型多线程应用程序,这样我们就可以接管48个CPU的盒子,而没有人可以关闭我们,因为每个CPU都以100%的速度旋转,并且所有线程都设置为SHED_FIFO(以root身份运行)。
罗..我不会从经验中讲..