2015-01-29 2 views
0

Когда я пытаюсь построить следующую простую тестовую программу в 32-разрядное Cygwin с GCC версии 4.9.2, я получаю ошибку говоря:notify_all_at_thread_exit не существует в Cygwin GCC

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); 
    } 
} 
+0

[Такая же компиляция ошибок на Coliru] (http://coliru.stacked-crooked.com/a/69bf33d2e62e15d3), которая, я считаю, является средой Linux. Похоже, что проблема не связана с Cygwin, но сам libstdC++ отсутствует в файле 4. notify_all_at_thread_exit' в 4.9.2. – Casey

ответ

Смежные вопросы