第9章 高级线程管理

本章主要内容

  • 线程池
  • 处理线程池中任务的依赖关系
  • 池中线程如何获取任务
  • 中断线程

之前的章节中,我们通过创建std::thread对象来对线程进行管理。在一些情况下,这种方式不可行了,因为需要在线程的整个生命周期中对其进行管理,并根据硬件来确定线程数量,等等。理想情况是将代码划分为最小块,再并发执行,之后交给处理器和标准库,进行性能优化。

另一种情况是,当使用多线程来解决某个问题时,在某个条件达成的时候,可以提前结束。可能是因为结果已经确定,或者因为产生错误,亦或是用户执行终止操作。无论是哪种原因,线程都需要发送“请停止”请求,放弃任务,清理,然后尽快停止。

本章,我们将了解一下管理线程和任务的机制,从自动管理线程数量和自动管理任务划分开始。