线程管理
概述
类线程代表单个执行线程。线程允许多个函数同时执行。
线程在构造关联的线程对象后立即开始执行(等待任何操作系统调度延迟),从作为构造函数参数提供的顶级函数开始。顶级函数的返回值将被忽略,如果它通过抛出异常而终止,则调用 std::terminate。顶级函数可以通过 std::promise 或通过修改共享变量(这可能需要同步,请参阅 std::mutex 和 std::atomic)向调用者传达其返回值或异常。
std::thread 对象也可能处于不代表任何线程的状态(在默认构造、移出、分离或连接之后),并且执行线程可能不与任何线程对象关联(在分离之后)。
两个 std::thread 对象不能代表同一个执行线程; std::thread 不是 CopyConstructible 或 CopyAssignable,尽管它是 MoveConstructible 和 MoveAssignable。
构造器
-
thread() noexcept;
创建一个新的 std::thread 对象,它不代表线程。 -
thread( thread&& other ) noexcept;
移动构造函数。构造 std::thread 对象来表示由 other 表示的执行线程。此调用之后 other 不再代表执行线程。 -
template< class F, class… Args > explicit thread( F&& f, Args&&… args );
创建一个新的 std::thread 对象,并将其与执行线程关联。新的执行线程开始执行: -
thread( const thread& ) = delete;
复制构造函数被删除;线程是不可复制的。任何两个 std::threa