Ответ 1
Используйте g++ вместо LLVM в XCode. Не забудьте связать потоки libs (-lpthread - или -pthread, -lrt) в настройках сборки компилятора. И подсчитывайте с различиями в поведении потоков по ОС Win/Mac/Linux (несмотря на это POSIX)
Для небольшого проекта для школы мне нужно создать простую конструкцию клиент/сервер, которая будет работать на маршрутизаторе (с openWRT), и я пытаюсь сделать что-то с потоками в этом приложении.
Мои навыки С++ очень ограничены, поэтому я нашел это на интернет в качестве основного примера.
#include <thread>
#include <iostream>
void doSomeWork( void )
{
std::cout << "hello from thread..." << std::endl;
return;
}
int main( int argc, char *argv[] )
{
std::thread t( doSomeWork );
t.join();
return 0;
}
Когда я пытаюсь запустить это в Xcode (4.5.2), я получаю следующую ошибку:
Попытка использования удаленной функции
И он показывает код:
__threaad_execute(tuple<_Fp, _Args...>& __t, __tuple_indices<_Indices...>)
{
__invoke(_VSTD::move(_VSTD::get<0>(__t)), _VSTD::move(_VSTD::get<_Indices>(__t))...);
}
Думаю, мне нужно что-то сделать с настройками сборки или библиотекой ссылок или что-то еще? Но я не совсем уверен, что делать точно. Я думал, что мне может потребоваться установить следующие настройки (которые я нашел здесь)
Но те настройки, которые уже установлены.
Есть ли какой-либо флаг/библиотека или что-то, что мне не хватает?
Используйте g++ вместо LLVM в XCode. Не забудьте связать потоки libs (-lpthread - или -pthread, -lrt) в настройках сборки компилятора. И подсчитывайте с различиями в поведении потоков по ОС Win/Mac/Linux (несмотря на это POSIX)