Поскольку я читал об улучшенной поддержке оптимизации времени ссылки в 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
)
Попробуйте добавить следующие параметры:
-Wl,--no-as-needed
Если это помогает, то это gcc
ошибка: https://stackoverflow.com/a/19463892/280758