Оптимизация времени ссылки конфликтует с поддержкой многопоточности

Поскольку я читал об улучшенной поддержке оптимизации времени ссылки в g++-4.9Я хочу попробовать. К сожалению, я получаю исключения во время выполнения, особенно std::system_errorс e.what() == Enable multithreading to use std::thread: Operation not permitted,

Теперь я обычно знаю, как исправить эту ошибку: добавить -pthread на мой вызов компилятора, но на самом деле, у меня уже есть этот параметр!

Мой пример кода:

#include <thread>

int main()
{
std::thread t([](){}); // do nothing in a thread!
t.join();              // wait for nothing to be done
}

Скомпилировано с (X = 7, 8 или 9)

g++-4.X -std=c++11 -pthread test.cpp -o thread_test_fine

работает без нареканий, как и ожидалось, без ошибок времени выполнения.

Тем не мение,

g++-4.X -std=c++11 -pthread -flto test.cpp -o thread_test_runtime_error

терпит неудачу с system_error исключение.

Вопрос:

Это поведение предназначено (что за исправление?) Или это ошибка?

(До того, как может возникнуть этот вопрос: все мои компиляторы --enable-threads=posix)

3

Решение

Попробуйте добавить следующие параметры:

-Wl,--no-as-needed

Если это помогает, то это gcc ошибка: https://stackoverflow.com/a/19463892/280758

2

Другие решения


По вопросам рекламы [email protected]