如何在C中指定CPU负载?

时间:2017-02-03 02:47:57

标签: c

我只是想知道是否有一个函数限制了这个程序可以占用多少CPU。虽然我的程序做得很辛苦,但我不希望我的C程序占用过多CPU并使系统滞后。

3 个答案:

答案 0 :(得分:0)

在蚀刻到微处理器中的程序中,是处理器执行的唯一程序,这样一个函数的目的是什么?

没有。在标准C中,没有这样的功能。

您可能会在POSIX C中找到一个,但这意味着操作系统类似于Unix。我的建议是nice

您可能最好使用分析器调整程序,以便硬作业以最佳方式运行并使用更少的CPU ......或购买更新,更快的计算机来解决问题。

答案 1 :(得分:0)

只要系统没有关于CPU时间的提升权限,您的系统就应该能够处理您的程序。如果你使用的是Windows,那么你可以偶尔执行一个Sleep()函数,这会使程序的线程停止指定的毫秒数,但现代操作系统不允许程序占用系统资源(无论如何正常程序)。这包括Windows和UNIX(Linux,Mac)系统。

您无法在C中执行您想要执行的操作。您必须使用操作系统,然后代码才能移植。听起来你想保持便携性,所以我认为你没有任何选择。

答案 2 :(得分:0)

除非你采取额外措施来实现这一目标,否则你的C程序不太可能会减慢系统的其余部分。也就是说,大多数操作系统允许进程降低其优先级,以便仅在没有其他任何事情发生时才运行。

在Windows中,您可以尝试:

SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_BEGIN);

在Unix中它看起来像这样:

int myPriority = getpriority(PRIO_PROCESS, 0);
setpriority(PRIO_PROCESS, 0, myPriority + 20);

你想要为自己制定一些细节。在Unix中,较高的数字是较低的优先级,但+20在某种程度上是任意的。