Kombination Lambda mit Threads



  • Hallo,

    eine Frage zur Kombination Lambda mit Threads:
    Ich möchte einen Thread t starten. Dieser soll eine Lambda Funktion ausführen.
    Wann und in welchem Thread (Aufruferthread oder erzeugter Thread) wird eine Variable kopiert (someVarByCopy)?
    Was ich bis jetzt im Debugger analysiert habe, wird das Kopieren bereits im Erzeugerthread und somit synchron erledigt (also wie wenn man ein Funktionsobjekt erzeugt).

    void doStuff(const U& u, const V& v)
    {
    	// u points to someVarByRef
    	// v points to copy of someVarByCopy
    }
    
    // in main():
    U someVarByRef;
    V someVarByCopy;
    
    std::thread t( [&, someVarByCopy] () { doStuff(someVarByRef, someVarByCopy); } );
    


  • Wie sollte es auch anders gehen? Würde die Variable erst im erzeugten Thread kopiert werden, dann müßte dieser Zugriff ja erst noch synchronisiert werden - und es wäre nicht sichergestellt, welchen Wert diese Variable hätte und ob sie überhaupt noch "im Scope" wäre.



  • danke!


Anmelden zum Antworten