最近,我一直在用 C++ 编写一个程序,它可以 ping 三个不同的网站,然后根据通过或失败的情况,它将等待 5 分钟或 30 秒,然后再次尝试。
目前我一直在使用ctime库和以下函数来处理我的等待。然而,根据我的 CPU 计量表,这是一个不可接受的解决方案。
void wait (int seconds)
{
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC;
while (clock () < endwait) {}
}
这个解决方案不可接受的原因是,根据我的 CPU 计量表,程序在等待时以 48% 到 50% 的 CPU 运行。我有一个 Athlon 64 x2 1.2 GHz 处理器。我的 130 行程序不可能达到接近 50% 的程度。
如何更好地编写等待函数,使其仅使用最少的资源?
2023 年更新:如今,您可能不再使用 Boot 来完成此任务,因为 C++ 标准库在 C++11 中添加了对休眠的本机支持。请检查下面更合适的答案。
为了保持便携,你可以使用提升::线程 http://www.boost.org/doc/libs/1_44_0/doc/html/thread.html睡觉用:
#include <boost/thread/thread.hpp>
int main()
{
//waits 2 seconds
boost::this_thread::sleep( boost::posix_time::seconds(1) );
boost::this_thread::sleep( boost::posix_time::milliseconds(1000) );
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)