Übergeben von lambdas an std :: faden und aufrufende Klassenmethoden

8

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!

    
user46317 11.03.2014, 17:29
quelle

2 Antworten

8

Sie können std :: ref verwenden, um die Parameter als Referenz zu übergeben:

%Vor%

Sie können die Parameter auch durch Referenz im Lambda selbst erfassen:

%Vor%     
alexk7 04.07.2014 22:29
quelle
0

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

    
sarup dalwani 02.10.2017 10:01
quelle

Tags und Links