std:: будущее исключение при экспериментальной реализации gcc в C++0x

Я экспериментирую с многопоточностью C++0x, частично реализованной в gcc 4.5, и у меня возникла проблема, которую я не могу понять. Давайте посмотрим на этот код

#include <future>
#include <iostream>

int main()
{
        std::cout << std::async([]() { return 10; }).get() << std::endl;
}

это довольно просто и должно работать, но это не так. Выдает std::system_error

прекращение вызова после выброса экземпляра 'std::system_error' what(): прервано

what () возвращает пустую строку, поэтому информации об ошибках вообще нет. Более того, он не работал над онлайн-компилятором, который также использует gcc 4.5, но теперь он работает. Вы можете увидеть его здесь http://liveworkspace.org/code/f3003d62a758e047a880920c84f1241c но вчера выдает то же исключение (хотя на сервере не было сделано никаких изменений). Вы знаете, в чем проблема?

Благодарю.

1 ответ

Решение

Попробуйте связать с -lpthread. По какой-то причине библиотека потоков компилируется без pthreads, но вылетает во время выполнения.

Другие вопросы по тегам