Multithreading 通知线程退出时的所有线程在Cygwin GCC中不存在
当我尝试使用GCC版本4.9.2在32位Cygwin中构建以下简单测试程序时,我得到一个错误,即:Multithreading 通知线程退出时的所有线程在Cygwin GCC中不存在,multithreading,c++11,cygwin,condition-variable,Multithreading,C++11,Cygwin,Condition Variable,当我尝试使用GCC版本4.9.2在32位Cygwin中构建以下简单测试程序时,我得到一个错误,即: error: ‘notify_all_at_thread_exit’ is not a member of ‘std’ 这让我觉得这个特定的方法还没有移植到Cygwin。有人知道我是否做错了什么,或者我是否能确定这确实是Cygwin遗漏的 建造线: /usr/bin/c++.exe -std=gnu++11 -o NotifyAllAtThreadExitTest.cc.o -c Notify
error: ‘notify_all_at_thread_exit’ is not a member of ‘std’
这让我觉得这个特定的方法还没有移植到Cygwin。有人知道我是否做错了什么,或者我是否能确定这确实是Cygwin遗漏的
建造线:
/usr/bin/c++.exe -std=gnu++11 -o NotifyAllAtThreadExitTest.cc.o -c NotifyAllAtThreadExitTest.cc
代码段:
#include <mutex>
#include <thread>
#include <condition_variable>
std::mutex m;
std::condition_variable cv;
bool ready = false;
void thread_func()
{
std::unique_lock<std::mutex> lk(m);
ready = true;
std::notify_all_at_thread_exit(cv, std::move(lk));
}
int test()
{
std::thread t(thread_func);
t.detach();
std::unique_lock<std::mutex> lk(m);
while(!ready) {
cv.wait(lk);
}
}
在4.9发行版系列中,libstdc++没有实现。事实上,它将出现在gcc 5.0版本中。,我相信这是一个Linux环境。问题似乎不是Cygwin特有的,但libstdc++本身在4.9.2.Ah中的线程退出时缺少notify_all_,这是有道理的。谢谢你,凯西!