facebook / facebook/folly

Future interruption (raise, cancel) doesn't propagate through `collect`

Ouverte
#1,237 3 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
Langage dominant
C++
Étoiles
30.5k
Forks
5.9k
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

One would expect that interrupting the future resulting from `collect` would interrupt all the source futures, but this doesn't happen.

This prints 0, not 2:

```
int n = 0;

auto [p1, f1] = folly::makePromiseContract();
p1.setInterruptHandler([&](const folly::exception_wrapper& ew) { ++n; });

auto [p2, f2] = folly::makePromiseContract();
p2.setInterruptHandler([&](const folly::exception_wrapper& ew) { ++n; });

auto f = folly::collect(std::move(f1), std::move(f2));

f.cancel();

printf("%d\n", n);
```

Is there a better way to accomplish this?

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.