Как заставить boost :: asio расставить приоритеты при завершении вызовов async_write над другими обработчиками? - PullRequest
5 голосов
/ 31 января 2011

Я реализую набор простых протоколов, используя boost :: asio (забывчивые схемы передачи).Они связаны с процессором, когда они работают.Чтобы повысить эффективность, я хочу, чтобы оба хоста работали как можно больше.Если у хоста A есть выбор между выполнением двух задач, одна из которых позволит хосту B начать вычисления, а другая - нет, я хочу, чтобы хост A выбрал первую.

В настоящее время io_service работает с большими вычислительными затратами.обработчики перед async_writes.Если окно tcp не заполнено (или какое-то похожее условие блокирует запись данных в socker), почти наверняка лучше завершить async_write, чем запускать какой-либо другой обработчик.

Я видел пример asio для очереди с приоритетамидля погрузчиков.Является ли переопределение async_write для использования такой очереди приоритетов единственным решением моей проблемы?

1 Ответ

3 голосов
/ 31 января 2011

В документации есть пример , описывающий, как прикрепить приоритет к обработчикам завершения.Вам не нужно переопределять async_write, просто реализуйте свою собственную версию класса handler_priority_queue из примера.

...