Thread in C++ in MacOS X

Ich versuche zum ausführen von code mit threads in C++ - standard (installiert mit XCode) in MacOS X Mavericks. Aber ich bin immer einige Fehler. Hier ein minimales Beispiel:

#include <thread>
#include <iostream>

void run (int x) {
    std::cout<<".";
}

int main (int argc, char const *argv[])
{
    std::thread t(run);
}

Die Fehler, die ich immer bin:

minimal.cpp:10:17: error: no matching constructor for initialization of 'std::thread'
std::thread t(run,0);
            ^ ~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/thread:372:9: note: candidate constructor template not viable: requires single argument '__f', but 2 arguments
  were provided
thread::thread(_Fp __f)
    ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/thread:261:5: note: candidate constructor not viable: requires 1 argument, but 2 were provided
thread(const thread&);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/thread:268:5: note: candidate constructor not viable: requires 0 arguments, but 2 were provided
thread() _NOEXCEPT : __t_(0) {}
^
1 error generated.

Habe ich in der Lage zu verfolgen, das problem an meinem compiler die Definition _LIBCPP_HAS_NO_VARIADICS definiert, weil der

#if !(__has_feature(cxx_variadic_templates))
#define _LIBCPP_HAS_NO_VARIADICS
#endif

Jede Hilfe würde geschätzt werden.

Danke!

  • Welche Befehlszeile Argumente sind Ihnen vorbei zu Rauschen?
  • Ich bin kompilieren mit g++, das mache ich nur g++ minimal.cpp. clang++ minimal.cpp auch nicht.
  • add --std=c++11 und sehen, ob es hilft
  • Es hilft in der Zusammenstellung, aber laufen gibt mir libc++abi.dylib: terminating .Abort trap: 6
  • das ist wohl ein anderes Thema. Versuchen Sie es durch den gdb und sehen, wo es bricht.
  • versuchen Sie t.join(); am Ende von main
  • Yep, das war es. Ich brauchte nur hinzufügen t.join(). Ich danke Ihnen sehr. Ich würde gerne geben Sie eine akzeptierte Antwort, aber dies ist ein Kommentar... Lassen Sie mich wissen, ob ich Antworten sollte mich. (Also, wenn dies geschieht, um jemand anderes, die Sie kennen lernen werden)
  • nur sich selbst beantworten

InformationsquelleAutor spalac24 | 2014-02-26
Schreibe einen Kommentar