std :: будущее исключение в экспериментальной реализации gcc C ++ 0x - PullRequest
12 голосов
/ 14 октября 2010

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

Спасибо.

1 Ответ

18 голосов
/ 14 октября 2010

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

...