| 158 | }; |
| 159 | |
| 160 | int main() |
| 161 | { |
| 162 | priority_scheduler sched; |
| 163 | auto ex = sched.executor(); |
| 164 | auto prefer_low = boost::asio::prefer(ex, custom_props::low_priority); |
| 165 | auto low = boost::asio::require(ex, custom_props::low_priority); |
| 166 | auto med = boost::asio::require(ex, custom_props::normal_priority); |
| 167 | auto high = boost::asio::require(ex, custom_props::high_priority); |
| 168 | execution::any_executor<custom_props::priority> poly_high(high); |
| 169 | prefer_low.execute([]{ std::cout << "1\n"; }); |
| 170 | low.execute([]{ std::cout << "11\n"; }); |
| 171 | low.execute([]{ std::cout << "111\n"; }); |
| 172 | med.execute([]{ std::cout << "2\n"; }); |
| 173 | med.execute([]{ std::cout << "22\n"; }); |
| 174 | high.execute([]{ std::cout << "3\n"; }); |
| 175 | high.execute([]{ std::cout << "33\n"; }); |
| 176 | high.execute([]{ std::cout << "333\n"; }); |
| 177 | poly_high.execute([]{ std::cout << "3333\n"; }); |
| 178 | boost::asio::require(ex, custom_props::priority{-1}).execute([&]{ sched.stop(); }); |
| 179 | sched.run(); |
| 180 | std::cout << "polymorphic query result = " << boost::asio::query(poly_high, custom_props::priority{}) << "\n"; |
| 181 | } |