macchina.io线程池的使用
时间: 2023-07-06 18:34:16 浏览: 85
macchina.io提供了一个名为`ThreadPool`的类,用于管理线程池。下面是使用示例:
```c++
#include "Poco/ThreadPool.h"
#include "Poco/Runnable.h"
#include <iostream>
using Poco::ThreadPool;
using Poco::Runnable;
class MyTask: public Runnable
{
public:
MyTask(int n): _n(n)
{
}
void run()
{
std::cout << "Task " << _n << " started." << std::endl;
// do some work...
std::cout << "Task " << _n << " finished." << std::endl;
}
private:
int _n;
};
int main(int argc, char** argv)
{
ThreadPool pool(2, 4); // 创建线程池,最小线程数为2,最大线程数为4
for (int i = 0; i < 10; ++i)
{
pool.start(new MyTask(i)); // 向线程池中添加任务
}
pool.joinAll(); // 等待所有任务执行完毕
return 0;
}
```
在上面的示例中,我们首先定义了一个`MyTask`类,它实现了`Runnable`接口。`MyTask`类的`run`方法中包含了需要执行的代码。
然后,我们在`main`函数中创建了一个`ThreadPool`对象,并指定了最小线程数为2,最大线程数为4。接下来,我们使用`start`方法向线程池中添加了10个任务,每个任务都是一个`MyTask`对象。
最后,我们调用`joinAll`方法等待所有任务执行完毕。这里需要注意的是,如果不调用`joinAll`方法,程序会立即结束,而尚未完成的任务可能会被中止。
阅读全文