Comments (2)
current_thread
is used so that multiple ranges interleave values even on a single thread. Not interleaving values can create infinite allocations inside some operators (zip is one culprit).
The create usage here is blocking in the subscribe function until the for loop completes. To get interleaving a loop cannot be used in create. Instead there must be some state and a function scheduled that sends one value and updates the state and reschedules itself.
from rxcpp.
Looks like it is because range
observable uses scheduling under-hood via identity_current_thread
instead of identity_immediate
template<class T>
static auto range(T first = 0, T last = std::numeric_limits<T>::max(), std::ptrdiff_t step = 1)
-> decltype(rxs::range<T>(first, last, step, identity_current_thread())) {
return rxs::range<T>(first, last, step, identity_current_thread());
}
I've expected, that second output should be "canonical", due to flat_map just subscribes on observable. In your cases both of observables are synchronized (i mean, no direct usage of threads and etc), so, subscribe should wait till on_completed. By this reason second result is correct. To have "non-serialized" output for second scenario you need to provide some scheduling manually.
@kirkshoop , what is reason to use current_thread instead of immediate for range observable?
from rxcpp.
Related Issues (20)
- Question about the coordinator in sources and why it causes segfault HOT 5
- Q: optional thread pool interface
- action_tailrecurser condition explanation
- Example test under Rx/v2/examples/tests fails
- `std::aligned_storage` is deprecated in C++23
- Docs for flat_map should reference concat_map but instead reference flat_map HOT 1
- Const overload of resource::get()
- Docs for rxcpp::sources::range are the same as those from rxcpp::observable<>::create
- identity_current_thread is bad "default" scheduler for operators
- error: unknown type name 'stdscr' auto timeout(AN&&... an) const
- Segmentation fault in case of using new_thread + current_thread
- combine_latest fails build with MSVC 19.34.31935.0 when C++ standard is set to 17 HOT 3
- Documentation request: provide examples for C++ that match examples from the "Intro to Rx" article HOT 2
- README doesn't explain how to run tests
- `find_package(rxcpp "4.1.1" CONFIG REQUIRED)` fails because CMake module version is not updated
- Create iterate error commit 562 "[Perfomance] Significantly reduce amount of copies/moves inside operators"
- run_loop dispatch optimization
- `is_hashable` is broken in C++20 (`std::hash<T>::result_type` and `::argument_type` were removed)
- Merge scheduler
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rxcpp.