或调用detach()(让线程在后台运行)。如果这两个函数都没有被调用,析构函数将立即导致程序异常终止并产...
顶层函数的返回值将被忽略,而且若它以抛异常终止,则调用 std::terminate 。顶层函数可以通过 std::promise 或通过修改共享变量(可能需要同步,见 std::mutex 与std::atomic )将其返回值或异常传递给调用方。std::thread 对象也可能处于不表示任何线程的状态(默认构造、被移动、 detach 或join 后),并且执行线程...
而基于线程的方法,如果doAsyncWork抛出了异常,程序会直接终止(通过调用std::terminate)。
...虽然std::thread.detach()可以不阻塞主线程,但是如果主线程结束那这些后台任务都会强行终止,比如你后台是下载任务,所以几乎没有直接用detach的,都是配合后面的同步机制如std::condition_variable...std::this_thread::sleep_for(std::chrono::seconds(3)); std::cout thread accomplished...多说一点,其实std...
std::thread和std::promise 相比std::async,std::thread就原始多了。...虽然std::thread.detach()可以不阻塞主线程,但是如果主线程结束那这些后台任务都会强行终止,比如你后台是下载任务,所以几乎没有直接用detach的,都是配合后面的同步机制如std::condition_variable...std::this_thread::sleep_for(std::chrono...