如何将Boost线程池从fifo转换为优先级?

时间:2009-08-31 12:57:55

标签: c++ boost threadpool sample thread-priority

我正在开发一个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而不是类,但我想为此再次使用现有的算法。

1 个答案:

答案 0 :(得分:1)

我认为您需要将mThreadPool声明为:

boost::threadpool::scoped_pool<boost::threadpool::prio_pool, 0> mThreadPool;

在您的班级中使用prio_task_func之前。

你看过http://sourceforge.net/projects/threadpool/吗?