【发布时间】:2014-01-31 01:16:26
【问题描述】:
网上有很多关于创建简单线程池的例子如Sample1和Sample2
我想要实现的是为不同的任务设置一个单独的线程池。例如,应用程序可能有一个线程池用于处理传入的 tcp 连接(我们称之为网络池),而另一个池用于与数据库通信(数据库池)。
这些传入的 tcp 请求可能需要来自数据库的信息。在这种情况下,它需要从数据库池中请求这些线程执行查询,并异步返回结果。
有没有推荐的使用 boost::asio 的方法?每个池都会有一个 io_service 实例吗?这些线程应该如何相互通信(使用 boost)?
我明白解释所有这些,代码不会那么短和琐碎,但如果可能的话,某种伪代码将不胜感激。
谢谢!
【问题讨论】:
-
IMO,最简单的方法是将每个拉动放在单独的
io_service上。为了进行交流,post在这些io_services 之间使用函子(但请注意,您不知道哪个线程会处理您的帖子)。
标签: c++ multithreading boost boost-asio pool