20 auto channel = copp::make_stackful_channel<int>();
23 my_task_t::ptr_t
task = my_task_t::create([&channel]() {
24 std::cout <<
"task " << cotask::this_task::get<my_task_t>()->get_id() <<
" started" << std::endl;
25 auto receiver = channel.first;
26 int value = cotask::this_task::get<my_task_t>()->await_value(receiver);
27 std::cout <<
"task " << cotask::this_task::get<my_task_t>()->get_id() <<
" resumed, got value: " << value
33 channel.second.set_value(42);
37 channel.first.reset_value();
39 my_task_t::ptr_t
task = my_task_t::create([&channel]() {
40 std::cout <<
"task " << cotask::this_task::get<my_task_t>()->get_id() <<
" started" << std::endl;
41 auto receiver = channel.first;
42 int value = cotask::this_task::get<my_task_t>()->await_value(receiver, [](copp::copp_error_code) {
return -5; });
43 std::cout <<
"task " << cotask::this_task::get<my_task_t>()->get_id() <<
" resumed, got value: " << value