Как преобразовать пул Boost из fifo в приоритет? - PullRequest
4 голосов
/ 31 августа 2009

Я работаю над пулом потоков 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 Ответ

1 голос
/ 10 сентября 2009

Я думаю, вам нужно объявить mThreadPool как:

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

, прежде чем использовать prio_task_func в вашем классе.

Вы смотрели на http://sourceforge.net/projects/threadpool/?

...