Threads/future soll map übergeben werden welche returnt wurde



  • Hi ich habe folgendes Problem:
    Ich habe eine Funktion, welche eine map returnt. Diese Funktion soll per Threads zwei mal parallel ausgeführt werden. Mit den zwei maps welche returnt wurden will ich nun weiterarbeiten. Wie funktioniert das? Mit futures? Ich habe nirgends etwas gefunden.



  • Was heißt, wie funktioniert das, und was ist dein Problem? Das würde man z.B. mit futures schon hinbekommen. Du müsstest halt irgendwo darauf warten, dass beide Threads fertig sind.
    Oder eine Highlevel Bibliothek benutzen. Hab neulich einen Beitrag über taskflow gesehen, ist angeblich gut, ich habs selber aber nicht benutzt:
    https://github.com/cpp-taskflow/cpp-taskflow



  • #include <map>
    #include <future>
    
    std::map<foo, bar> qux()
    {
    	return /* a map */
    }
    
    int main()
    {
    	std::future<std::map<foo, bar>> a_future = std::async(qux);
    	std::future<std::map<foo, bar>> b_future = std::async(qux);
    
    	// ... do something ...
    
    	auto a = a_future.get();
    	auto b = b_future.get();
    
    	// ... have fun with a and b.
    }