最近我一直在用C++编写一个程序来ping三个不同的网站,然后根据通过或失败,它会在再次尝试之前等待5分钟或30秒.
目前我一直在使用ctime库和以下函数来处理我的等待.但是,根据我的CPU仪表,这是一个不可接受的解决方案.
void wait (int seconds)
{
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC;
while (clock () < endwait) {}
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案不可接受的原因是因为根据我的CPU仪表,程序在等待时运行在我CPU的48%到50%之间.我有一个Athlon 64 x2 1.2 GHz处理器.我的适度130线计划甚至不可能接近50%.
如何更好地编写我的等待函数,以便它只使用最少的资源?
MOn*_*DaR 13
为了保持便携性,您可以使用Boost :: Thread进行睡眠:
#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;
}
Run Code Online (Sandbox Code Playgroud)
使用C++ 11标准,可以使用以下方法:
std::this_thread::sleep_for(std::chrono::milliseconds(100));
std::this_thread::sleep_for(std::chrono::seconds(100));
Run Code Online (Sandbox Code Playgroud)
或者sleep_until可以使用.
| 归档时间: |
|
| 查看次数: |
4181 次 |
| 最近记录: |