我正在开发一个Boost线程池。
我有这样的结构:
class SimThreadPool
{
static SimThreadPool* getInstance();
boost::threadpool::prio_pool& getThreadPool() { return mThreadPool; }
simTerrain::SimThreadPool::SimThreadPool()
: mThreadPool(boost::threadpool::fifo_pool(1))
{
}
boost::threadpool::prio_pool mThreadPool;
}
当我需要一个帖子时,我称之为:
SimThreadPool::getInstance()->getThreadPool().schedule(MyThread());
它有效。
问题是:如何将此线程池从fifo转换为优先级?
我将所有fifo\_pool
更改为 prio\_pool
,但我无法管理 - 它无效。我有一些错误。
在这种情况下如何使用prio_pool
?
我认为我必须使用prio_task_func
而不是类,但我想为此再次使用现有的算法。
答案 0 :(得分:1)
我认为您需要将mThreadPool声明为:
boost::threadpool::scoped_pool<boost::threadpool::prio_pool, 0> mThreadPool;
在您的班级中使用prio_task_func
之前。