notify_all_at_thread_exit 在 Cygwin GCC 中不存在
notify_all_at_thread_exit doesn't exist in Cygwin GCC
当我尝试在 32 位 Cygwin 中使用 GCC 4.9.2 版构建以下简单测试程序时,我收到一条错误消息:
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++ 没有实现 std::notify_all_at_thread_exit
. It will be present in the gcc 5.0 release, in fact it was just added in revision 218255 on 2014-12-02。
当我尝试在 32 位 Cygwin 中使用 GCC 4.9.2 版构建以下简单测试程序时,我收到一条错误消息:
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++ 没有实现 std::notify_all_at_thread_exit
. It will be present in the gcc 5.0 release, in fact it was just added in revision 218255 on 2014-12-02。