Я использую boost::asio
и пытаюсь контролировать порядок вызова моих обработчиков. Я указал на пример prioritised_handlers.cpp
.Когда я попытался адаптировать его, я не получил ожидаемого поведения.Когда я передаю обработчик в io_service.post
из обработчика, обработчик никогда не запускается.
Я начал пытаться найти самый маленький пример поведения, которого я не понимаю.Итак, сделайте следующую модификацию для http://www.boost.org/doc/libs/1_38_0/doc/html/boost_asio/example/invocation/prioritised_handlers.cpp
Простой пример:
161 while (io_service.run_one())
162 {
163 // The custom invocation hook adds the handlers to the priority
164 // queue
165 // rather than executing them from within the poll_one() call.
166 while (io_service.poll_one())
167 ;
168 io_service.post(pri_queue.wrap(1, low_priority_handler));
169
170 pri_queue.execute_all();
171
172 }