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