L'interface pour std::future::then
dans le journal N3784 comprenait une version surchargée qui acceptait un exécuteur (décrite plus en détail ici dans N3562 ) comme paramètre. Ainsi, si vous souhaitez avoir plus de contrôle sur le thread sur lequel le callback est exécuté, vous pouvez le faire.
Mais le document officiel qui passe en revue toutes les fonctionnalités de la TS concurrentielle est le suivant http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0159r0.html#futures.unique_future n'inclut pas cette surcharge pour .then() et ne mentionne pas du tout les exécuteurs. Il dit
Lorsque l'état partagé de l'objet est prêt, la suite
INVOKE(DECAY_COPY(std::forward<F>(func))
,std::move(*this))
est appelé sur un fil d'exécution non spécifié avec l'appel àDECAY_COPY()
en cours d'évaluation dans le fil qui l'a appelé.
Pourquoi l'interface n'offre-t-elle pas un contrôle précis de l'exécution de la fermeture ? Comment peut-on alors exercer un contrôle sur le thread qui exécute le callback ? Pourquoi ce changement par rapport à la version proposée ?
Nota Je ne suis pas sûr que le document de TS sur la concurrence auquel j'ai fait référence soit le plus récent, mais cppreference ne mentionne pas de executor
n'importe où, soit
Editer Si quelqu'un a une référence ou une raison dans un document sur les normes C++ qui mentionne la raison de ne pas continuer avec les exécuteurs, ce serait génial !