【发布时间】:2015-01-01 17:52:28
【问题描述】:
在我的程序中,使用 boost asio io_service,我想要两个并行的调用链。两个无限循环写入和读取两个 USB 端口。但是 boost asio io_service 能保证两个并行调用链的执行吗?看看这个最小的例子:
#include <boost/asio/io_service.hpp>
#include <functional>
class Chain
{
public:
Chain(boost::asio::io_service &io_service, const std::string &message)
: io_service(io_service)
, message(message)
{}
void call()
{
std::cout << message << std::endl;
io_service.post(std::bind(&Chain::call, this));
}
private:
boost::asio::io_service &io_service;
std::string message;
};
int main()
{
boost::asio::io_service io_service;
Chain chain1(io_service, "1");
Chain chain2(io_service, "2");
chain1.call();
chain2.call();
io_service.run();
return 0;
}
打印出来
1
2
1
2
1
...
因为当前的 io_service 实现是 fifo 调度程序。是不是保证以后不打印了
1
1
1
1
1
...
?
【问题讨论】:
标签: c++ boost boost-asio