我遇到了IPC问题,我需要使用boost::asio::io_service
这样做。
想法是在2个线程之间打开管道连接,其中线程#1通知线程#2,线程#2使用boost::asio::io_service
并在线程#1发送消息时唤醒。
我看到使用connect_pair绑定2个流套接字的示例,因此在另一端可以读写到一端。我会将其称为readfd
和writefd
。
我想将writefd
分配给线程#1,将readfd
分配给线程#2。然后线程#2应运行io_service
并等待事件。
写入writefd
应该调用此事件,这将导致线程2被唤醒。
但到目前为止我无法想象如何去做。
这是我想要做的主要想法:
boost::asio::io_service io;
boost::asio::local::stream_protocol::socket readfd (io);
boost::asio::local::stream_protocol::socket writefd (io);
boost::asio::local::connect_pair( readfd, writefd );
//allocate writefd to thread 1
....
//wait for read event - << how to do it?
io.run()
我以为我可能会用:
boost::asio::local::stream_protocol::acceptor
//or
//open and bind but i could not understand how to do so