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%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
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:
Tags und Links c++ multithreading c++11 concurrency