![](/img/trans.png)
[英]std::this_thread::yield() vs std::this_thread::sleep_for()
[英]'yield' is not a member of 'std::this_thread'
我试图产生当前线程:
的std :: this_thread ::收率();
但不幸的是GCC知道的更好:
'yield'不是'std :: this_thread'的成员
我忘了一些类似于D_GLIBCXX_USE_NANOSLEEP的黑客攻击,或者是什么?
是的,这似乎是与_GLIBCXX_USE_NANOSLEEP
类似的问题。 GCC根据宏_GLIBCXX_USE_SCHED_YIELD
有条件地编译yield
。 如果你定义它,它应该编译。
这将在GCC 4.8中修复。
您不应在代码中定义_GLIBCXX_USE_NANOSLEEP
或_GLIBCXX_USE_SCHED_YIELD
。 它们是GCC / libstdc ++ - 内部宏,所以应该定义它。 如果没有定义它们,那是因为GCC没有配置检查功能可用性的选项。 因为对于你正在使用的任何系统来说,启用该选项显然没有任何缺点,你可以问任何提供你的GCC的人这样做。 在此之前,比在代码中启用宏更安全的hack是修改系统上的c++config.h
文件以定义宏。
在配置gcc以启用sched_yield检测时,您可能需要使用'--enable-libstdcxx-time'。 出于某种原因,只需检查多个功能
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.