我只是想知道是否有一个函数限制了这个程序可以占用多少CPU。虽然我的程序做得很辛苦,但我不希望我的C程序占用过多CPU并使系统滞后。
答案 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在某种程度上是任意的。