Je travaille sur un projet C++ qui doit exécuter plusieurs tâches dans un pool de threads. Les travaux sont sujets aux pannes, ce qui signifie que j'ai besoin de savoir comment chaque travail s'est terminé après l'achèvement. En tant que programmeur Java pour la plupart, j'aime l'idée d'utiliser des «futures» ou un paradigme similaire, semblable aux différentes classes du paquet util.concurrent de Java.Développement d'une bibliothèque d'accès concurrentiel C++ avec "futures" ou un paradigme similaire
J'ai deux questions: d'abord, quelque chose comme ça existe déjà pour C++ (je n'ai rien trouvé dans Boost, mais peut-être que je ne regarde pas assez fort); et en second lieu, est-ce même une idée sensée pour C++?
Je trouve un bref exemple de ce que je suis en train d'accomplir ici:
http://www.boostcookbook.com/Recipe:/1234841
Est-ce que cette approche a du sens?
Il ressemble à ceci décrit une méthode de passage des résultats entre les threads. Puisque les threads partagent de la mémoire et qu'ils sont tous sous votre contrôle, pourquoi cela a-t-il besoin d'une méta-structure? Pourquoi ne pas simplement créer une classe concrète pour contenir vos résultats et signaler quand les résultats sont disponibles. – Jay
Bonne question, Jay. La vraie raison pour laquelle nous voulons utiliser le paradigme des futurs est que nous pouvons hisser les exceptions d'une tâche asynchrone à un thread de jointure. – Tom