Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ';收益率';不是';std::此螺纹';_C++_Multithreading_Gcc_C++11 - Fatal编程技术网

C++ ';收益率';不是';std::此螺纹';

C++ ';收益率';不是';std::此螺纹';,c++,multithreading,gcc,c++11,C++,Multithreading,Gcc,C++11,我试图给出当前线程: std::this_thread::yield() 但不幸的是,GCC更清楚: “yield”不是“std::this_thread”的成员 我是否忘记了一些类似于D_GLIBCXX_USE_NANOSLEEP的黑客,或者什么?是的,这似乎是一个类似于\u GLIBCXX_USE_NANOSLEEP的问题。GCC根据宏\u GLIBCXX\u USE\u SCHED\u yield有条件地编译。如果你定义它,它应该编译 这将从GCC 4.8开始修复。您不应该在代码中定义\u

我试图给出当前线程:

std::this_thread::yield()

但不幸的是,GCC更清楚:

“yield”不是“std::this_thread”的成员


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

是的,这似乎是一个类似于
\u GLIBCXX_USE_NANOSLEEP
的问题。GCC根据宏
\u GLIBCXX\u USE\u SCHED\u yield
有条件地编译。如果你定义它,它应该编译


这将从GCC 4.8开始修复。

您不应该在代码中定义
\u GLIBCXX\u USE\u NANOSLEEP
\u GLIBCXX\u USE\u SCHED\u YIELD
。它们是GCC/libstdc++-内部宏,所以应该这样定义它。若并没有定义它们,那个是因为GCC并没有配置检查函数可用性的选项。因为无论您使用的是什么系统,启用该选项显然没有任何负面影响,所以您可以要求提供GCC的人这样做。在此之前,比在代码中启用宏更安全的黑客方法是修改系统上的
c++config.h
文件以定义宏。

在配置gcc以启用sched_产量检测时,您可能需要使用“--enable libstdcxx time”。出于某种原因,对多个功能只需进行一次检查

您是否可以添加一个您认为应该运行的最小程序?