
基于可变参模板实现线程池
C++实现基于可变参模板实现的线程池,可跨平台
林林林ZEYU
坚持
展开
-
950-线程池项目版本二
#ifndef THREADPOOL_H#define THREADPOOL_H#include <iostream>#include <vector>#include <queue>#include <memory>#include <atomic>#include <mutex>#include <condition_variable>#include <functional>#incl原创 2022-01-08 12:04:02 · 445 阅读 · 0 评论 -
949-线程池项目版本一
threadpool.h#ifndef THREADPOOL_H#define THREADPOOL_H#include <vector>#include <queue>#include <memory>#include <atomic>#include <mutex>#include <condition_variable>#include <functional>#include <unord原创 2022-01-08 12:01:20 · 453 阅读 · 0 评论 -
905-Linux平台编译线程池动态库(死锁问题2)
Linux平台编译线程池动态库编译动态库:怎么回事?因为运行的时候系统都去这个路径找库我们这么做:刷新配置文件:怎么回事,在Windows跑没问题,在Linux跑却有问题?gdb调试调试一个正在运行的程序(发生死锁的进程)总共有5个线程:1号是主线程,线程池线程剩下4个。我们看到,线程池的线程都在wait我们看到:对应于我们看代码上的调用:问题出在这里:为什么会lock_wait了???不应该啊!!!notify为原创 2021-12-07 16:53:42 · 533 阅读 · 0 评论 -
904-线程池项目死锁问题分析
死锁问题1、在ThreadPool的资源回收,等待线程池所有线程退出时,发生死锁问题,导致进程无法退出我们的资源回收代码如下://线程池析构ThreadPool::~ThreadPool(){ isPoolRunning_ = false; notEmpty_.notify_all(); //等待线程池里面所有的线程返回 有两种状态:阻塞 & 正在执行任务中 std::unique_lock<std::mutex> lock(taskQueMtx_); exi原创 2021-12-07 12:51:28 · 893 阅读 · 0 评论 -
902-基于可变参模板实现的线程池架构和使用方式
项目设计用户的初始化操作如下:用户提交任务的操作如下:用户获取任务执行的结果操作如下:原创 2021-12-06 13:08:12 · 1188 阅读 · 0 评论 -
901-基于可变参模板实现的线程池(基础知识梳理)
并发和并行CPU单核CPU多核、多CPU并发单核上,多个线程占用不同的CPU时间片,物理上还是串行执行的,但是由于每个线程占用的CPU时间片非常短(比如10ms),看起来就像是多个线程都在共同执行一样,这样的场景称作并发(concurrent)。并行在多核或者多CPU上,多个线程是在真正的同时执行,这样的场景称作并行(parallel)。多线程的优势多线程程序一定就好吗?不一定,要看具体的应用场景:IO密集型(涉及I/O操作)无论是CPU单核、CPU多核、多CPU,都是比较适合多线原创 2021-12-06 12:21:34 · 2587 阅读 · 0 评论