摘要:
本文汇总了 《简单的线程池(三)》、《简单的线程池(四)》、《简单的线程池(五)》 中的测试数据,并在此基础上对比了 非阻塞共享式、阻塞共享式、非阻塞独占式、阻塞独占式 这四个线程池的吞吐量指标。笔者对结果进行了分析,给出笔者的结论。如对测试方案、概念等有不明之处,请参考该博文。 【注】非阻塞共享式 阅读全文
摘要:
本文描述了在类 Unix 操作系统中,无需等待回车即可获取来自键盘输入的办法,并加以了验证。 ◆ 目的 在类 Unix 操作系统(如 Linux、macOS)中,如何能实现无需等待回车即可获取来自键盘输入? ◆ 解法 通过 termios 程序库中与终端关联的 termios 结构和 tcgetat 阅读全文
摘要:
笔者在 《简单的线程池(四)》 中采用了非阻塞的(nonblocking)线程同步方式,在此文中笔者将采用阻塞的(blocking)线程同步方式(参考 《简单的线程池(二)》) 实现相同特性的线程池。 本文不再赘述与 《简单的线程池(二)》、《简单的线程池(四)》 相同的内容。如有不明之处,请参考该 阅读全文
摘要:
笔者对 《简单的线程池(一)》 中的非阻塞式线程池进行了改造。在新的线程池中,为每个工作线程配备一个独占的任务队列。线程池用户提交的任务被随机地分配到各个独占的任务队列中。工作线程从独占的任务队列中获取任务并执行。 本文不再赘述与 《简单的线程池(一)》 相同的内容。如有不明之处,请参考该博客。 ◆ 阅读全文
摘要:
本文中,作者针对 《简单的线程池(一)》 和 《简单的线程池(二)》 介绍的两个线程池分别进行了并发测试。基于收集的测试数据,笔者对结果进行了分析,给出笔者的结论。 ◆ 目的 本测试是为了确认非阻塞式线程池与阻塞式线程池的生存性,以及两者在吞吐量上的差异,为改进线程池提供数据支撑。 【注】这里的差异 阅读全文
摘要:
笔者在 《简单的线程池(一)》 中采用了非阻塞的(nonblocking)线程同步方式,在此文中笔者将采用阻塞的(blocking)线程同步方式实现相同特性的线程池。 本文中不再赘述与 《简单的线程池(一)》 相同的内容。如有不明之处,请参考该博客。 ◆ 实现 以下代码给出了此线程池的实现,(blo 阅读全文
摘要:
本文描述了在绑定重载函数时出现的一个编译问题,并在解释其原因后给出了对应的解决办法。 ◆ 问题 代码中存在重载(overloaded)的自由函数(也称全局函数)或类成员函数,当开发者尝试用 std::bind 绑定其中一个时,会提示如下编译错误: error: no matching functio 阅读全文
摘要:
本文给出了一个线程池的实现方案和内部逻辑,并对其进行了验证。 此线程池拥有一个被所有工作线程共享的任务队列。线程池用户提交的任务,被线程池保存在任务队列中,工作线程从任务队列中获取任务并执行。 任务是可拥有返回值的、无参数的可调用(callable)对象,或者是经 std::bind 绑定了可调用对 阅读全文