考虑一个阻塞函数:this_thread :: sleep_for(milliseconds(3000));RXCPP:阻塞函数超时
我试图获得以下行为:
Trigger Blocking Function
|---------------------------------------------X
我想要触发闭锁功能,如果时间过长(超过两秒钟),它应该超时。
我已经做了以下内容:
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());
我不能得到这个工作。对于初学者来说,我认为s不能从另一个线索on_next。
所以我的问题是,这是做什么正确的反应方式?如何在rxcpp中封装一个阻塞函数并为其添加超时?
随后,我想表现得像这样的一个RX流:
Trigger Cleanup
|------------------------X
(Delay) Trigger Cleanup
|-----------------X
我认为这可以做的另一种方式是: 'auto connection = timeout.amb(blocking_function_observable)' – jc211