Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的睡眠操作+;在OSX上_C++_Macos_Sleep - Fatal编程技术网

C++ C+中的睡眠操作+;在OSX上

C++ C+中的睡眠操作+;在OSX上,c++,macos,sleep,C++,Macos,Sleep,我希望以毫秒为单位执行上述操作。我应该选择哪个库和函数调用?EDIT 2017:C++11sleep\u for是正确的方法。请看 C++03: 由于MacOSX是基于Unix的,所以您几乎可以始终只使用标准的linux功能 在这种情况下,您可以使用usleep(这需要以微秒为单位的时间),只需将毫秒乘以1000就可以得到微秒 #include <unistd.h> int main () { usleep(1000); // will sleep for 1 ms

我希望以毫秒为单位执行上述操作。我应该选择哪个库和函数调用?

EDIT 2017:C++11
sleep\u for
是正确的方法。请看


C++03:

由于MacOSX是基于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
}
#包括
int main(){
usleep(1000);//将睡眠1毫秒
usleep(1);//将睡眠0.001毫秒
usleep(1000000);//将睡眠1秒
}
有关此功能的更多信息,请查看Linux手册页:


如果您的编译器支持C++11,您可以使用
sleep\u for
并避免使用特定于操作系统的API。()

#包括
#包括
int main()
{
std::this_线程::sleep_for(std::chrono::毫秒(1000));
返回0;
}

请使用sleep(整数或数字),除非您需要纳秒或微秒

nanosleep(),usleep()可能值得一看。在xcode 4.6.3中,我可以使用c++11支持,但头线程不存在?这是一个比我更好的答案!(谢谢Xornand,我从来没有想过要使用它们!)但是你是对的,要在Xcode中编译C++11头文件,你需要打开C++11库支持。转到导航器中的项目,单击生成设置,然后搜索C++标准库。将项目的设置更改为
libc++
。我已经编辑了Xornand的优秀答案以反映此信息,但在我的编辑被接受之前,它将不可见。:)@m_j请将接受的答案更改为此答案!:)如果您是在OS 10.7或更高版本上编译,请参阅下面Xornand的答案!使用C++11比使用特定于操作系统的代码更具跨平台性!要使用C++11功能,必须在Xcode中专门打开它。请参阅下面我对@Xornand答案的评论!睡眠(0.001f)将睡眠0秒(睡眠需要整数),谢谢@cap。我已经修正了答案。更好地使用nanosleep(),usleep()是不推荐的(在POSIX中)。提问者表示他需要毫秒的分辨率<代码>睡眠()提供秒的分辨率。
#include <thread>
#include <chrono>

int main()
{
    std::this_thread::sleep_for(std::chrono::milliseconds(1000));
    return 0;
}