-
Notifications
You must be signed in to change notification settings - Fork 205
Add merge
for sequence senders
#1659
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- add `__debug_sequence_sender` - add `__well_formed_sequence_sender` - add static-member-fn support to `get_item_types` - add static-member-fn support to `subscribe` - add support for `STDEXEC_ENABLE_EXTRA_TYPE_CHECKING`
…nd `get_item_types`
- add `__well_formed_sequence_sender` constraint - add `__mexception` overloads for `get_item_types` - remove constraints that were causing SFINAE that would skip the debug info
each input sequence may be on a different scheduler. The merged items will invoke `set_next` on the receiver from all of the contexts. Depending on the schedulers in play, the calls to `set_next` may overlap in parallel.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
very cool. only minor stylistic nits. template parameters should always be capitalized, and alias templates should end with _t
. otherwise looks great.
" auto get_item_types(_Env&&...) -> exec::item_types<\n" \ | ||
" // This sequence produces void items...\n" \ | ||
" stdexec::__call_result_t<stdexec::just_t>,\n" \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this return type is missing a trailing >
/ok to test 4cca273 |
merge
takes multiple sequence-senders and forwards all the item-senders from each of the input sequences to the sameReceiver::set_next
The calls to
Receiver::set_next
are not synchronized. If each sequence-sender is emitting on a different scheduler in parallel, then the calls toReceiver::set_next
will also be in parallel.merge
completes after all the sequence-senders complete.The other commits were needed to debug the
merge
implementation.