繁体   English   中英

'yield'不是'std :: this_thread'的成员

[英]'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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM