4

我正在研究 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\_poolprio\_pool,但我无法做到这一点 - 它没有用。我有一些错误。

在这种情况下我该如何使用prio_pool

我想我必须使用prio_task_func而不是一个类,但我想为此目的重新使用我现有的算法。

4

1 回答 1

1

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

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

prio_task_func在你的课堂上使用之前。

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

于 2009-09-10T15:50:35.770 回答