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