一个简单的线程池类






2.95/5 (15投票s)
2004年1月1日

88473

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