在Windows上,我可以这样做:
HANDLE hCurrentProcess = GetCurrentProcess();
SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);
我怎样才能在* nix上做同样的事情?
答案 0 :(得分:23)
尝试:
#include <sys/time.h>
#include <sys/resource.h>
int main(){
setpriority(PRIO_PROCESS, 0, -20);
}
请注意,您必须以超级用户身份运行才能使其正常工作。
(有关详细信息,请在提示符下键入“man setpriority”。)
答案 1 :(得分:5)
如果在unix下做这样的事情你想要(作为root)chmod你的任务并设置s位。然后,您可以在运行时更改您的运行对象,优先级,线程调度等。
只要您没有编写带有错误的大型多线程应用程序就可以了,这样您就可以接管48个CPU盒子并且没有人可以关闭您,因为您的每个CPU都会以100%的速度旋转所有线程集以root身份运行的SHED_FIFO(运行完成)。
不,我不会从经验中说话......答案 2 :(得分:2)
@ allain
您是否可以在不超级用户的情况下降低自己的流程优先级?
不确定。但请注意,这是一条单行道。你甚至无法回到你开始的地方。当系统出现大量负载时,即使是相当小的优先级降低也会对运行时间造成极大的影响。