65.9K
CodeProject 正在变化。 阅读更多。
Home

一个简单的线程池类

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.95/5 (15投票s)

2004年1月1日

viewsIcon

88473

downloadIcon

1949

一个简单的线程池类

引言

线程池是提高多线程程序性能的一个非常重要的概念。通常线程池包括一个异步队列,用于保存线程可以从中选择任务,以及调用者可以向其中放入任务。

在线程池代码中,我们定义了一个异步队列、一个 Job 接口和一个 ThreadPool 类来管理线程。同步是线程池的核心。

我已经实现了一些类,可以使您更容易理解。

详细说明

使用线程池类非常简单。首先,您应该通过继承“Job”接口来实现您的作业类。这意味着您需要实现两个接口函数。

class Job {
public:
    virtual void Process() = 0;
    virtual ~Job() {};
};

例如,您可以将您的作业类定义为

class MyJob1 : public Job {
public:
    MyJob1(int index) : data(index) {};
    virtual void Process() {
        cout << data << endl;
    }
    ~MyJob1() {};

private:
    int data;
};

“Process”函数由线程调用。然后,您可以像以下这样使用线程池。

ThreadPool tp(4, TRUE);
Job *job = new MyJob1(0);
tp.Assignment(job);

当然,我故意将其做得简单,以便您理解如何创建和使用线程池。您可以自由地修改它并添加其他功能。

© . All rights reserved.