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

Dej*_*jwi 9 c++ multithreading gcc c++11

我试图产生当前线程:

的std :: this_thread ::收率();

但不幸的是GCC知道的更好:

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

我忘了一些类似于D_GLIBCXX_USE_NANOSLEEP的黑客攻击,或者是什么?

R. *_*des 13

是的,这似乎是一个类似于问题的问题_GLIBCXX_USE_NANOSLEEP.GCC yield根据宏有条件地编译_GLIBCXX_USE_SCHED_YIELD.如果你定义它,它应该编译.

这将在GCC 4.8中修复.


小智 7

你不应该定义_GLIBCXX_USE_NANOSLEEP或者_GLIBCXX_USE_SCHED_YIELD在你的代码.它们是GCC/libstdc ++ - 内部宏,所以应该定义它.如果没有定义它们,那是因为GCC没有配置检查功能可用性的选项.因为对于你正在使用的任何系统来说,启用该选项显然没有任何缺点,你可以问任何提供你的GCC的人这样做.在此之前,比在代码中启用宏更安全的黑客是修改c++config.h系统上的文件以定义宏.