3

我是提升 asio 的新手。我读过这个比较:libuv 与 Boost/ASIO 相比如何?(死链接)

事实证明,除了套接字编程之外,还有机会使用 asio 的事件循环。我打算使用这个异步事件循环来处理来自 UI 的消息。
到目前为止,我有一个并发队列,我想实现自己的 boost::asio IO 对象。目标是使用此对象,如您在此处看到的:

#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;
}

所以目的是通过一个能够异步调用函数(foo)的 IO 对象保持 io_service 忙碌,当队列(消息)有消息可以被弹出时。该队列有一个名为wait_and_pop的方法。它阻塞调用者线程,直到队列有东西要弹出,然后返回弹出的项目值。
我被困在这一点上,没有sockects,我在网上找不到任何boost asio教程。有一些类似的问题,但都使用套接字。知道如何实现我自己的 IO 对象吗?还是我错过了任何重要的障碍?非常感谢!

4

0 回答 0