【问题标题】:How to convert Boost thread pool from fifo to priority?如何将Boost线程池从fifo转换为优先级?
【发布时间】:2010-11-24 08:20:57
【问题描述】:

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

【问题讨论】:

  • 请提供错误信息。

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


【解决方案1】:

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

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

在课堂上使用 prio_task_func 之前。

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

【讨论】:

    猜你喜欢
    • 2010-09-22
    • 1970-01-01
    • 2011-06-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多