【发布时间】:2014-11-12 05:14:14
【问题描述】:
在我的应用程序中,我将收到我想按优先顺序异步处理的各种事件。
我可以用boost::asio::io_service 做到这一点,但我的应用程序是单线程的。我不想支付锁和mallocs 你可能需要多线程程序(性能成本对我来说真的很重要)。我基本上是在寻找为单线程执行而编写的boost::asio::io_service。
我很确定我可以使用boost::coroutine 自己实现这一点,但在我这样做之前,是否已经存在类似boost::asio::io_service 之类的为单线程执行而编写的东西?我已经扫描了 boost 库的列表,但没有什么特别突出的
【问题讨论】:
-
你可以把 io_service::run() int main();
-
从single thread 致电
io_service::run()。 -
@IgorR。当然在内部,服务对象仍然会锁定它的队列。但是,我闻到过早的优化。如果您确实发现“所有同步”正在扼杀您的吞吐量/发送延迟,只需使用一个允许您替换具体细节的接口来实现它。
-
很高兴知道锁定开销只有在每秒超过几十万次操作后才能看到。这远高于 99% 的应用程序。可能最好继续添加该线程。
标签: c++ boost boost-asio boost-context