我需要测试一些通信库并且需要让服务器保持忙碌以便我可以测试超时,但是我无法使用sleep()
,因为它会在测试期间导致问题。
我可以使用通用算法来保持进程忙吗?我不关心运行CPU热,只是让进程在没有花费太多资源的情况下保持几秒钟的返回。
如果我可以定义保持流程忙碌的时间,那将非常有用。
答案 0 :(得分:3)
这实际上取决于您希望如何保持流程“忙碌”。忙于处理数字的进程与忙于使用io的进程或不断需要内核工作的进程之间存在很大差异。
如果你想测试你的代码是否正确超时,我建议在另一端创建延迟。如果您想在服务器负载较高时测试代码是否正常运行,我建议您添加一些有关您希望应用程序运行的环境的更多详细信息 - 例如其他应用程序将同时耗尽资源的情况
答案 1 :(得分:-1)
简单:
while(time() < stopSleepTime)
{
//Do something bogus like sending a webrequest or microsleep, something that takes time
}
这应该会炒掉cpu :-P
答案 2 :(得分:-1)
您可以尝试为一组随机选择的点解决Traveling Salesman。
答案 3 :(得分:-1)
如果sleep()
导致问题,您只想等待:
while(time() < stopSleepTime) {};
如果您提供特定的环境,肯定会有其他更准确的解决方案。