![](/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.