facebook / facebook/folly

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

Offen
#1,237 3 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C++
Sterne
30.5k
Forks
5.9k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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?

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.