многопоточность — C ++ 11 Threads, виртуальная функция Error Pure называется

Вот очень минимальный код API C ++ 11 Thread, который я пытаюсь скомпилировать

#include<iostream>
#include<thread>

using namespace std;

void threadFunction(void)
{
cout<<"hello from thread:";//<<this_thread::get_id()<<endl;
}

int main()
{
std::thread t(threadFunction);
t.join();

return 0;
}

При компиляции это как
g ++ thread1.cpp -pthread -std = c ++ 11
Я получаю следующую ошибку
чисто виртуальный метод называется

завершить вызов без активного исключения

Отменено

Что не так, может кто-нибудь, пожалуйста, помогите

Обратите внимание, что я собираю это на Beaglebone Black с процессором ARM A8

6

Решение

Это ошибка в libstdc ++ или Clang, в зависимости от того, кого вы спрашиваете. Он должен работать, если вы используете версию Clang, выпущенную после октября 2013 года. Что вы видите, когда запускаете g++ --version?

В качестве обходного пути вы можете попробовать использовать эту командную строку вместо этого. Я не гарантирую, что это сработает; пожалуйста, оставьте комментарий с вашими результатами.

g++ -pthread -std=c++11 -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4} thread1.cpp

Вот отчет об ошибке:

http://llvm.org/bugs/show_bug.cgi?id=12730

И вот официальное исправление для драйвера Clang:

https://llvm.org/viewvc/llvm-project?view=revision&Пересмотр = 191707

Я не знаю, была ли это ранее также ошибка в драйвере GCC, и / или была ли она исправлена.

4

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

Столкнулся с той же проблемой на Raspberry Pi 2 Model B с ARM Cortex-A7.
Скомпилированный с g ++ — 4.7, оказалось, что виновником был флаг компилятора:

-march=armv7-a
3

Несмотря на то, что clang имел связанную проблему, это полностью ошибка gcc, теперь записанная в: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62100

0