Ich benutze C++ mit CMake Makefile mit -std=c++11
.C++ 11 cmake O3 Option <kein passender Konstruktor für die Initialisierung von 'std :: thread'>
Mein Programm verwenden mehrere Thread-Methode. Ich kann mein Programm ohne Probleme erstellen und ausführen.
Aber wenn ich -03
Optimierung Flagge auf CMake Option hinzufügen, ich habe diese Fehlermeldung:
"Keinen passenden Konstruktor zur Initialisierung von 'std :: thread'"
Erste I d 'ont verstehen, warum nur in -O3
Option erscheint.
Second Ich mag würde in -O3
kompilieren, sehe ich andere Q & A, die über mythread = std::thread(&X::run<A, B>, this, a, b);
sprechen, aber es funktioniert nicht in meinem Programm und ich verstehe nicht, wie zu bedienen.
Hier ist meine Funktion möchte ich in Thread nehmen:
static void getPoints(Mat *in, vector<Point> *posPoint, float *h,int rad, int dex,int decy, Mat *debug = NULL);
Heute habe ich sehr einfach anrufen mit: std::thread t1(get4points,&myImage, ...
Bei std::thread(&X::run<A, B>, this, a, b);
Ich verstehe nicht, was genau &X::run<A, B>
ist, bei Ich rufe eine Funktion einer Klasse in einer Funktion derselben Klasse auf. Pseudo-Code
Beispiel:
class myclass
{
template<int A, int B> void run(int a, int b)
{
// ...
}
void myMainfunction(int a, int b)
{
?????? -> std::thread(&this::run<int, int>, this, 1, 1);
}
};