簡體   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