条款35 :优先选用基于任务而非基于线程的程序设计

ZaynPei Lv6

该条款的核心观点是,当需要异步运行一个函数时,使用 std::async基于任务 (task-based) 的方法,通常优于直接使用 std::thread基于线程 (thread-based) 的方法。

基于线程 (Thread-based) 与 std::thread

std::thread 是 C++ 标准库中对操作系统线程 (Thread) 的直接封装。线程可以看作是 CPU 上一个独立的执行流。

std::async

std::async 是一个函数模板,用于以异步方式(可能在一个单独的线程中)启动一个任务。相比于直接使用 std::thread,std::async 提供了一种更高层次、更方便的抽象,特别适用于那些需要从异步任务中获取返回值的场景。

On this page
条款35 :优先选用基于任务而非基于线程的程序设计