Considérons une fonction de blocage: this_thread :: sleep_for (millisecondes (3000));RXCPP: Timeout sur la fonction de blocage
Je suis en train d'obtenir le comportement suivant:
Trigger Blocking Function
|---------------------------------------------X
Je veux déclencher la fonction de blocage et si elle prend trop de temps (plus de deux secondes), il devrait délai d'attente.
Je l'ai fait ce qui suit:
my_connection = observable<>::create<int>([](subscriber<int> s) {
auto s2 = observable<>::just(1, observe_on_new_thread()) |
subscribe<int>([&](auto x) {
this_thread::sleep_for(milliseconds(3000));
s.on_next(1);
});
}) |
timeout(seconds(2), observe_on_new_thread());
Je ne peux pas obtenir ce travail. Pour commencer, je pense que s ne peut pas on_next à partir d'un fil différent. Donc, ma question est, quelle est la manière réactive correcte de le faire? Comment est-ce que je peux emballer une fonction de blocage dans rxcpp et lui ajouter un timeout?
, je veux ensuite obtenir un flux de RX qui se comporte comme ceci:
Trigger Cleanup
|------------------------X
(Delay) Trigger Cleanup
|-----------------X
Une autre façon que j'ai pensé que cela peut être fait est: 'auto connection = timeout.amb (blocking_function_observable)' – jc211