C++线程池ThreadPool
文章平均质量分 57
线程池
陈岂几真幸运
冲冲冲
展开
-
05 Any上帝类实现
因为我们需要得到线程执行完成后的结果,这个结果可能有不同类型的值,需要一个可以操作不同类型值的方法,C++17引入的Any类似java和python的object类,它是所有类型的基类,可以用来存储和操作任意类型的值。(不同类型的数据作为派生类的一个成员变量)原创 2023-06-12 22:34:15 · 87 阅读 · 0 评论 -
04 线程池整体架构
线程队列会去任务队列中取出任务拿来执行,外部用户线程会向任务队列里提交任务,内部设计线程通信,使用mutex+conditionvariable互斥锁+条件变量。开启线程池,创建好设定数量的线程对象放入线程容器(threads_),并将线程需要执行的函数(threadFunc)通过bind绑定器绑定给线程。任务类型通过继承多态,线程池中提供task抽象基类,提供一个纯虚函数run,我们在调用的时候从task继承一个mytask,重写一下run函数。参数,则默认使用当前系统支持的并发线程数作为初始线程数量。原创 2023-06-12 18:30:19 · 82 阅读 · 0 评论 -
03 线程池线程同步之线程通信
多个并发执行的线程或者进程访问共享资源的时候,执行的顺序不确定性导致了数据的交叉访问和竞争。1.共享资源的读写:多个线程同时读取和写入共享资源,可能导致数据的不一致性;2.程序的控制流程操作:多个线程或进程在没有适当同步的情况下改变程序的控制流,可能导致意外的执行路径和结果;3.使用了不可重入函数:多个线程同时调用一个不可重入函数,该函数依赖于共享的状态,可能导致结果的不确定性。原创 2023-05-28 22:39:09 · 33 阅读 · 0 评论 -
02 线程池中线程数量确定
多线程程序也不一定好,具体问题具体分析。原创 2023-05-22 22:58:38 · 106 阅读 · 0 评论 -
01 并发和并行概念
并发是指在同一时间段内,有多个任务在运行,这些任务可能会相互影响,并且需要交替执行。例如,在一个操作系统中同时运行多个应用程序。而并行则是指在同一时间段内,有多个任务同时运行,这些任务是独立的,不会相互影响,并且可以同时执行。例如,在一个计算机中同时进行多个计算任务。总的来说,如果多个任务是同时执行的,就是并行;如果多个任务是在同一时间段内交替执行的,就是并发。原创 2023-05-22 22:28:30 · 54 阅读 · 0 评论