2009-08-31 3 views
3

Я работаю над пулом потоков Boost.Как преобразовать пул потоков увеличения из fifo в приоритет?

У меня есть структура вроде этого:

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

Пожалуйста, сообщите об ошибке. – mikelong

ответ

1

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

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

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

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