В настоящее время я пытаюсь сделать возможным удаление работы, поставленной в очередь через post
или dispatch
до io_context
.Работа ставится в очередь небольшим количеством групп очередей, для которых работа должна быть удалена сразу:
boost::asio::io_context context;
auto work = [] {
// ...
};
boost::asio::post(context, std::move(work));
// ... now I want to remove the work
Существует ли такая функциональность, предоставляемая библиотекой asio?
В настоящее времяприложение, над которым я работаю, использует пул потоков, который вызывает io_context::run()
из нескольких потоков.
Моя идея состояла в том, чтобы я мог создать несколько io_context
s, которые отправляются пулом потоков таким образом, чтобы один io_context
представляет группу, которую можно удалить с помощью io_context::stop()
.Все io_context
будут храниться в одном списке, который затем объединяется для выдающихся событий.
Однако я считаю, что объединение или ожидание многих io_context
может привести к проблемам с производительностью.Есть ли другое решение?