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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dank
pwny
undPeterT
, dachte ich, der Fehler.Ich brauchte nur zu kompilieren mit
clang++ -std=c++11 minimal.cpp
und es funktionierte wie ein Charme.Ich musste auch ein
t.join()
am Ende um zu verhindern, dass eine Ausführung Fehler passieren.g++
in diesem Fall? Ich weißclang++ -std=c++11
funktioniert für mich auch.bin ich immer verschiedene std::thread-Verhalten ausführen gleichen app. auf xcode oder-Instrumente (profiling), die auf xcode die single-thread/Multi-Thread-Verhältnis ist 0.6 und Instrumente 3.7 Verwendung einer 4-thread-array,
wie ist das möglich?