Custom Boost Asio IO объект

Я новичок в повышении ASIO.
Я прочитал это сравнение: Как libuv сравнивается с Boost / ASIO?

Оказалось, что есть возможность использовать цикл событий asio по другим причинам, кроме программирования сокетов. Я планирую использовать этот цикл асинхронных событий для обработки сообщений, поступающих из пользовательского интерфейса.
Пока у меня есть параллельная очередь, и я хотел бы реализовать свой собственный объект IO boost :: asio. Цель состоит в том, чтобы использовать этот объект, как вы можете видеть здесь:

#include <iostream>
#include <boost/asio.hpp>
#include "MProcessor.h"#include "concurrent_queue.h"
void foo(const boost::system::error_code& /*e*/)
{
std::cout << "got message" << std::endl;
}

int main()
{
concurrent_queue<int> messages;
/* ... */
boost::asio::io_service io;

MProcessor t(io, &messages);
t.async_wait(&foo);

io.run();

return 0;
}

Таким образом, цель состоит в том, чтобы сохранить io_service занятым объектом ввода-вывода, который может асинхронно вызывать функцию (foo), когда очередь (сообщения) имеет сообщение, которое может быть извлечено. В очереди есть метод с именем wait_and_pop. Он блокирует поток вызывающей стороны до тех пор, пока в очереди не появится что-то всплывающее, а затем вернется со значением выделенного элемента.
Я застрял на этом этапе, и я не смог найти ни одного онлайн-урока по BooSIO без сопроводительных документов. Есть несколько похожих вопросов, но все они используют сокеты.
Любая идея, как реализовать свой собственный объект ввода-вывода? Или я пропускаю какие-то важные препятствия? Большое спасибо!

3

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]