1、介绍
该项目是一个实现多线程池的简单项目,我将它作为简单的C++项目入门,代码并不多但是精读该代码对于学习C++的新特性以及线程实现有很好的作用。本文会详细讲解代码及使用的库特性,作为初学者如有错误敬请指正。
2、头文件
2.1、头文件包含的库
#ifndef THREAD_POOL_H
#define THREAD_POOL_H
#include <vector>
#include <queue>
#include <memory>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <future>
#include <functional>
#include <stdexcept>
memory库:智能指针库,操作用std::shared_ptr或std::make_shared创建指针,通过该库创建的指针可以在不再需要指针后自动释放,避免在线程未结束前指针被释放引起崩溃。
thread库:线程库,通过std::thread创建线程,并通过.join()保护线程防止在其他线程未结束之前主线程结束,.joinabel()判断是否可以保护线程。
mutex库:互斥锁库,配合线程使用防止不同线程对同一个变量进行操作,整个文件中只能有一个互斥锁定义std::mutex mtx。最简单的操作方式是在写操作之前mtx.lock()锁进程,用mtx.unlock()解锁进程。最最常用的方式是std::unique_lock<std:mutex> lg(mt

本文详细介绍了如何用C++实现一个多线程池,涉及智能指针、线程库、互斥锁、条件变量和future库的使用。通过实例代码解析enqueue函数,旨在帮助初学者理解C++新特性和线程管理。
最低0.47元/天 解锁文章
818

被折叠的 条评论
为什么被折叠?



