Probleme Codezeile zu verstehen (struct)
-
Hallo ich arbeite mich gerade durch das Thema Multithreading und bin dabei auf folgenden Code gestossen
#include <iostream> #include <thread> #include <vector> using namespace std; struct Counter { int value = 0; Counter():value(0){} void increment() { value++; } }; int main() { Counter counter; vector<thread> threads; for (int i = 0; i < 5; i++) { threads.push_back(thread([&counter](){ for (int i = 0; i < 5000; i++) { thread(counter.increment()); } })); } for (auto & thread : threads) { thread.join(); } cout << counter.value << std::endl; system("pause"); return(0); }...
Quelle: https://www.cs.colorado.edu/~kena/classes/5448/f12/presentation-materials/xia.pdf (S. 9)
Ich verstehe folgenden Befehl darin nicht:
[&counter](){ for (int i = 0; i < 5000; i++) { thread(counter.increment()); ...
Was wird dort mit dem Struct gemacht. Kann mir das jemand in einfachen Worten erklären? Vielen Dank im Voraus.
W
-
Der Compiler wird das nicht übersetzen. Du hast falsch abgetippt.
-
Das ist ein Lambda, oder was verstehst du nicht?
Es wird 5000 mal inkrement aufgerufen, aber das wird ja wohl nicht dein Problem sein.
-
@mechanics sagte in Probleme Codezeile zu verstehen (struct):
Lambda
Vielen Dank. Hatte mich mit Lambdas nicht beschäftigt. Es ist gut wenn man einen Namen hat, den man nachschlagen kann.