在 Windows 上,我可以这样做:
HANDLE hCurrentProcess = GetCurrentProcess();
SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);
我怎样才能在 *nix 上做同样的事情?
在 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 CPU 的机器并且没有人可以关闭您,因为您的每个 CPU 都以 100% 的速度旋转,并且所有线程都设置为 SHED_FIFO(运行完成)以root身份运行。
不..我不会根据经验说话....
@艾伦
您可以在不成为超级用户的情况下降低自己进程的优先级吗?
当然。但是请注意,这是一条单行道。你甚至无法回到你开始的地方。当系统负载很大时,即使是相当小的优先级降低也会对运行时间产生惊人的大影响。