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