我应该通过sleep_for来交换我们的睡眠

时间:2015-10-01 12:41:20

标签: c++ c++11

我正处于使用gcc在Linux下将一些旧版C ++代码升级到C ++ 11的阶段。在设置优先级时,我提出了以下问题。通过拨打usleep来与std::this_thread::sleep_for交换电话是否有任何优势?在代码我说的是运行线程应该等待很短的时间。因此,我不需要任何高级功能,如打断睡眠。

1 个答案:

答案 0 :(得分:9)

是。 std::this_thread::sleep_for由C ++ 11标准指定,因此是具有C ++ 11编译器和标准库的任何系统上的可移植解决方案。

usleep由POSIX.1-2001指定(并声明已过时!),这意味着它只能(可靠地)在POSIX兼容系统上使用。

POSIX.1-2008删除usleep的规范,支持nanosleep。仅凭这个原因,std::this_thread::sleep_for是一个更好的选择。

(详见http://linux.die.net/man/3/usleep)。