簡單的執行緒池(九)

  • 2022 年 1 月 10 日
  • 筆記

◆ 概要 本文中,笔者尝试组合了非阻塞式和阻塞式的队列,成为新的组合式线程池。线程池有一个共享任务队列,每个工作线程各有一个工作任务队列。线程池用户提交的任务,先被保存在共享任务队列中。线程池的调度器线程将共享任务队列中的任务分派给工作线程的工作任务队列,工作线程从工作任务队列中获取任务并执行。 【 …

Continue Reading

簡單的執行緒池(八)

  • 2021 年 12 月 29 日
  • 筆記

概要 笔者根据 Anthony Williams 在《C++并发编程实战》中所述, 某个工作线程在任务队列的头部操作,而其它工作线程在任务队列的尾部操作。这实际上意味着这个队列对于拥有线程来说是一个后进先出的栈。最近被放到队列中的任务会最先被取出来执行。从缓存的角度来说这可以提高性能,因为对比之前被 …

Continue Reading

簡單的執行緒池(七)

  • 2021 年 12 月 23 日
  • 筆記

◆ 概要 本文中,笔者为 《简单的线程池(四)》 提及的非阻塞独占式线程池增加了一项功能:当某个工作线程的任务队列中无工作任务时,此工作线程可以去其他工作线程的任务队列中获取任务。笔者称之为非阻塞互助式线程池。 笔者对比了测试结果与 《简单的线程池(六)》 的数据,得出了添加功能前后的差异。 本文不 …

Continue Reading

簡單的執行緒池(六)

  • 2021 年 12 月 17 日
  • 筆記

◆ 概要 本文汇总了 简单的线程池(三) 、 简单的线程池(四) 、 简单的线程池(五) 中的测试数据,并在此基础上对比了 非阻塞共享式 、 阻塞共享式 、 非阻塞独占式 、 阻塞独占式 这四个线程池的吞吐量指标。笔者对结果进行了分析,给出笔者的结论。如对测试方案、概念等有不明之处,请参考 该博文 …

Continue Reading

簡單的執行緒池(五)

  • 2021 年 12 月 14 日
  • 筆記

◆ 概要 笔者在 《简单的线程池(四)》 中采用了非阻塞的(nonblocking)线程同步方式,在此文中笔者将采用阻塞的(blocking)线程同步方式(参考 《简单的线程池(二)》 ) 实现相同特性的线程池。 本文不再赘述与 《简单的线程池(二)》 、 《简单的线程池(四)》 相同的内容。如有不 …

Continue Reading

簡單的執行緒池(四)

  • 2021 年 12 月 13 日
  • 筆記

概要 笔者对 《简单的线程池(一)》 中的非阻塞式线程池进行了改造。在新的线程池中,为每个工作线程配备一个独占的任务队列。线程池用户提交的任务被随机地分配到各个独占的任务队列中。工作线程从独占的任务队列中获取任务并执行。 本文不再赘述与 《简单的线程池(一)》 相同的内容。如有不明之处,请参考该博客 …

Continue Reading

簡單的執行緒池(三)

  • 2021 年 12 月 8 日
  • 筆記

概要 本文中,作者针对 简单的线程池 和 简单的线程池(二) 介绍的两个线程池分别进行了并发测试,并基于收集的测试数据,对结果进行了分析。 目的 本测试是为了确认 非阻塞式线程池 与 阻塞式线程池 的生存性,以及两者在吞吐量上的差异,为改进线程池提供数据支撑。 【注】这里的差异以非阻塞式的吞吐量为基 …

Continue Reading

簡單的執行緒池(二)

  • 2021 年 11 月 30 日
  • 筆記

概要 作者在 简单的线程池 中采用了非阻塞的(nonblocking)线程同步方式,在此文中作者将采用阻塞的(blocking)线程同步方式实现相同特性的线程池。 本文中不再赘述与 简单的线程池 相同的内容。如有不明之处,请参考 该博客 。 实现 以下代码给出了此线程池的实现。 class Thre …

Continue Reading

簡單的執行緒池

  • 2021 年 11 月 25 日
  • 筆記

概要 此线程池拥有一个被所有工作线程共享的任务队列。线程池用户提交的任务,被线程池保存在任务队列中,工作线程从任务队列中获取任务并执行。 任务是可拥有返回值的、无参数的可调用(callable)对象,或者是经 std::bind 绑定了可调用对象及其参数后的调用包装器。具体而言可以是 自由函数(也称 …

Continue Reading