如何通过简单示例实现线程池功能?

2026-04-29 12:221阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1227个文字,预计阅读时间需要5分钟。

如何通过简单示例实现线程池功能?

最近自己写了一个线程池。简单来说,线程池就是一个任务队列和一个线程队列。任务队列中存放着待执行的任务,线程队列中存放着可以执行任务的线程。线程队列不断地从任务队列中取出任务来执行,当任务队列为空时,线程会阻塞等待新的任务加入。

最近自己写了一个线程池。

总的来说,线程池就是有一个任务队列,一个线程队列,线程队列不断地去取任务队列中的任务来执行,当任务队列中为空时,线程阻塞等待新的任务添加过来。

我是用queue来存放任务,vector存放thread*,然后用condition_variable 来设置线程阻塞和唤醒。

下面直接上代码吧。

线程池类头文件Thread_Pool.h

/******************************************** 线程池头文件 Author:十面埋伏但莫慌 Time:2020/05/03 *********************************************/ #pragma once #ifndef _THREAD_POOL_H_ #define _THREAD_POOL_H_ #include<thread> #include<queue> #include<mutex> #include<atomic> #include<vector> #include<condition_variable> typedef std::function<void()> Func;//定义线程执行函数类型,方便后面编码使用。

阅读全文

本文共计1227个文字,预计阅读时间需要5分钟。

如何通过简单示例实现线程池功能?

最近自己写了一个线程池。简单来说,线程池就是一个任务队列和一个线程队列。任务队列中存放着待执行的任务,线程队列中存放着可以执行任务的线程。线程队列不断地从任务队列中取出任务来执行,当任务队列为空时,线程会阻塞等待新的任务加入。

最近自己写了一个线程池。

总的来说,线程池就是有一个任务队列,一个线程队列,线程队列不断地去取任务队列中的任务来执行,当任务队列中为空时,线程阻塞等待新的任务添加过来。

我是用queue来存放任务,vector存放thread*,然后用condition_variable 来设置线程阻塞和唤醒。

下面直接上代码吧。

线程池类头文件Thread_Pool.h

/******************************************** 线程池头文件 Author:十面埋伏但莫慌 Time:2020/05/03 *********************************************/ #pragma once #ifndef _THREAD_POOL_H_ #define _THREAD_POOL_H_ #include<thread> #include<queue> #include<mutex> #include<atomic> #include<vector> #include<condition_variable> typedef std::function<void()> Func;//定义线程执行函数类型,方便后面编码使用。

阅读全文