Variable Anzahl asynchroner Threads mit C ++ 11

7

Ich arbeite an einem Programm, in dem ich Async in einer Schleife verwenden möchte. In dem Beispielcode, den ich eingefügt habe, gibt es nur 10 Elemente, sodass ich einfach eine explizite Variable für jedes Element erstellen kann. In meinem Hauptprogramm kann die Anzahl der Elemente im Vektor jedoch variieren. Idealerweise würde ich gerne einen Vektor von asynchronen Threads erstellen - einen für jedes Element im Array -, die beim Durchlauf durch den asynchronen Vektor zurückgeschoben werden. Dann möchte ich darauf warten, dass alle vollständig sind und dann " get () "um alle ihre Ausgaben zurückzugeben.

Der folgende Code ruft async auf, indem für jeden Thread eine explizite Variable zugewiesen wird, aber kann jemand Async dynamisch in einem Vektor aufrufen, ohne ihm explizit eine Variable zuweisen zu müssen? Idealerweise möchte ich, dass dieses Programm "std :: cout" einmal für jedes Mal aufruft, wenn es durchläuft, anstatt nur einmal.

%Vor%     
Jack Simpson 17.11.2014, 03:08
quelle

3 Antworten

7

Eine Antwort einschließlich std::cout :

%Vor%     
ALittleDiff 17.11.2014, 03:28
quelle
12

Sie können dies lösen, indem Sie einen Vektor von Futures erstellen, der Ihrem Vektor entspricht, etwa so:

%Vor%

Beachten Sie die Verwendung von std :: cref , um const reference . Verwenden Sie std :: ref , um nicht konstante Referenzen zu übergeben.

    
Galik 17.11.2014 03:44
quelle
3

Wenn ich richtig verstanden habe, könnte etwas wie sein:

%Vor%

Entschuldigung, ich kann nicht als Kommentar posten, aber auf diese Weise, abhängig von der Logik, und wenn es funktioniert, dann sollten Sie in der Lage sein, den Vektor vessel dynamisch zu manipulieren.

Aktualisieren

besser noch:

%Vor%

Auf diese Weise müssen Sie keine Variable explizit deklarieren. Aber Sie müssen delete sobald Sie fertig sind:

%Vor%     
GChamon 17.11.2014 03:17
quelle