如何使用线程池,其中每个线程都有自己的成员

时间:2017-05-13 15:18:36

标签: c++ multithreading c++11 threadpool

为简单起见,我有一个对象(类),我想以线程的形式运行。 该对象拥有自己的成员。

我想使用线程池在4个线程上创建,并且每次运行那些具有不同参数的4个线程。

类(线程类)看起来:

class CLogicThread {
public:
    CLogicThread();
    void RunLogic();
    void SetParams(int num);
    virtual ~CLogicThread();

private:
    int m_Number = 0;
};

void CLogicThread::RunLogic() {

    m_Number = m_Number + rand() % 2;
    int miliToSleep = rand() % 2000 + 100;
    usleep(miliToSleep);
    std::cout << "Running Thread Id : " << std::this_thread::get_id() << " Value: " << m_Number;

}


void CLogicThread::SetParams(int num) {
    m_Number = num;
}

每当有一个线程提前完成它的工作时,它将获得一个新的工作(不创建新线程,即使用其中一个空闲线程)。 类似的东西:

    Pool pool(4); // I dont have this class and looks for it
    int counter = 0;
    while (true) {
        usleep(10);
        counter++;
        // the next code line will be blocked till new thread is avaliable
        CLogicThread* pLogicThread = pool->GetThreadElement();
        pLogicThread->SetParams(counter);
        pLogicThread->RunLogic();

    }

我看过这里: Thread pooling in C++11

在这里: CTPL

但是没有找到我需要的游泳池。 我可以使用蚂蚁开源池吗?或者我需要实施它吗?

0 个答案:

没有答案