Ich habe ein paar Probleme mit std :: thread zusammen mit lambdas. Ich habe eine Methode TheMethod, wo ich std :: thread verwenden sollte, um einige Funktionsaufrufe zu Methoden in der gleichen Klasse zu parallelisieren.
Ich definiere eine Lambda-Funktion und versuche, sie wie folgt an die std :: thread-Instanz zu übergeben, die ich create:
%Vor%Leider gibt mir der Compiler:
%Vor%Ich habe viele Kombinationen in der Lambda-Definition und in der Art des Aufrufs des std :: thread-Konstruktors ausprobiert, aber ich bekomme immer den gleichen Fehler. Die Thread-Bibliothek ist enthalten, ich verbinde pthread auch.
Danke für Hinweise!
Dies liegt daran, dass der Objektcursor und a dem Konstruktor von thread als Wert übergeben werden. Der Funktor verwendet einen Verweis auf die lokalen Kopien des neu erstellten Threads und nicht auf die Objekte, die Sie erwartet haben.
Also, wie von "alexk7" beantwortet, sollten Sie std :: ref verwenden, oder wenn Sie sie erfassen möchten, übergeben Sie durch Verweis
Tags und Links c++ multithreading lambda c++11