美文网首页
C++ 线程池实现(上)

C++ 线程池实现(上)

作者: 开源519 | 来源:发表于2020-12-01 23:35 被阅读0次

1. 引言

最近工作开始使用C++,于是想用C++实现一个线程池。这里就分两篇文章来记录一下实现的过程,本篇主要为理论篇,具体的实践篇,等代码功能稳定以后再总结。

2. 简介

本部分从线程池作用到线程池的原理介绍。想要实现具体的线程池,需要先知道线程池有什么作用,然后再去学习他的原理,最终用代码实现出来。

线程池的作用

在具体的代码中,经常会遇到以下场景:
① 监听机制:在代码正常运行时,需要随时监听主线程的状态或者某个变量的状态,一旦状态变化立刻需要处理。
② 耗时任务: 在主进程执行某个耗时特别长的任务时,会导进程长时间阻塞卡顿现象。
③ 任务状态控制:即在任务执行过程中,能够终止此任务的执行。
等等。

以上情景都可以用线程来实现,当以上场景在一个代码中多次出现时,可能就要创建很多个线程来满足相应的需求了。但线程过多或者频繁创建和销毁线程会带来调度开销,进而影响缓存局部性和整体性能。在线程池中只存在几个固定的线程,由线程池来维护,等待调度器派发已存在空闲的线程去执行对应的任务。由此,便实现了线程的一次创建多次使用的功能,从而避免了短时间内的任务时创建与销毁线程的代价。线程池不仅能保护资源的充分利用,还能保证不被过分调度。

线程池的原理

线程池的在初始化时,会先创建固定数量的线程;具体的任务会放在任务队列中,类似于生产者-消费者概念。多个线程作为消费者,任务队列作为生产者。当任务队列存在多个任务时,便会由调度器依次将任务派发给现有的线程执行。某个任务执行完毕后,当前线程就会被释放,此时调度器可继续派发任务给线程执行。如此反复便实现了,多个任务并发的执行。


线程池原理.png

3 总结

本篇文章简单记录一下线程池的作用及原理,后续文章会记录具体的代码实现。

相关文章

  • C++ 线程池实现(上)

    1. 引言 最近工作开始使用C++,于是想用C++实现一个线程池。这里就分两篇文章来记录一下实现的过程,本篇主要为...

  • 初识c++多线程

    主要参考以下两篇博客c++多线程 thread类c++实现线程池当一个thread被创建以后要么join等待线程执...

  • C++ 实现线程池

    c++实现一个线程池,首先需要有两个数据结构,一个是线程池,一个是任务队列。为了每个线程线程安全的从任务队列里面拿...

  • 线程以及java线程池实现分享

    线程以及java线程池实现分享 线程简介 JDK线程池的工作原理 JDK线程池的实现细节 1.线程简介-由来 1....

  • java多线程面试题

    实现多线程的方法 1.实现Thread接口 2.实现Runnable接口创建线程 3.实现 线程池 创建线程池的代...

  • 无聊到看了眼java线程池源码

    一、线程池框架 线程池本质上就是一个任务执行器。我们在使用线程池时使用的实现类就是ThreadPoolExecut...

  • C++ 线程池实现原理

    背景 多线程编程是C++开发者的一个基本功, 但是很多开发者都是直接使用公司给包装好的线程池库, 没有去了解具体实...

  • C++线程池的实现

    本人在开发过程中经常会遇到需要使用线程池的需求,但查了一圈发现在C++中完备的线程池第三方库还是比较少的,于是打算...

  • 不怕难之线程池原理

    一、线程池状态 ThreadPoolExecutor 是 JDK 中的线程池实现,这个类实现了一个线程池需要的各个...

  • 阿里淘宝面试记录

    2/27日 电话一面 • 起手式:自我介绍• 介绍下简历上的项目• 线程池的使用,线程池如何实现的,线程池的原理•...

网友评论

      本文标题:C++ 线程池实现(上)

      本文链接:https://www.haomeiwen.com/subject/gdeewktx.html