【发布时间】:2013-10-26 16:58:55
【问题描述】:
我想以毫秒为单位执行上述操作。我应该更喜欢哪个库和函数调用?
【问题讨论】:
-
nanosleep(), usleep() 可能值得一看。
我想以毫秒为单位执行上述操作。我应该更喜欢哪个库和函数调用?
【问题讨论】:
编辑 2017:C++11 sleep_for 是正确的方法。请参阅Xornad's answer, below。
C++03:
由于 Mac OS X 是基于 Unix 的,您几乎总是可以只使用标准的 linux 函数!
在这种情况下,您可以使用 usleep(需要以微秒为单位的时间),只需将毫秒乘以 1000 即可获得微秒。
#include <unistd.h>
int main () {
usleep(1000); // will sleep for 1 ms
usleep(1); // will sleep for 0.001 ms
usleep(1000000); // will sleep for 1 s
}
有关此函数的更多信息,请查看 Linux 手册页:
【讨论】:
如果您的编译器支持 C++11,则可以使用 sleep_for 并避免使用特定于操作系统的 API。 (http://en.cppreference.com/w/cpp/thread/sleep_for)
#include <thread>
#include <chrono>
int main()
{
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
return 0;
}
【讨论】:
libc++。我已经编辑了 Xornand 的出色答案以反映此信息,但在我的编辑被接受之前它不会可见。 :)
除非您需要纳秒或微秒,否则请只使用睡眠(整数或数字)
【讨论】:
sleep() 提供秒级分辨率。