这个图是从别的地方拿的思想是一样的
async是异步任务他不会创建一个线程,他会使用上下文调用方法把这个函数当成一个线程!注意只是当成然后给他塞到调用里面当主线程阻塞或者时间片到了会调用这个函数。
这也就解释了为什么这个函数ID和主线程一样
而多线程是创建了一个线程把他塞到时间片里去,所以你会text函数ID和他的主线程ID不一样
但我不理解C++11标准为什么async封装的函数会创建一个新线程那真的叫异步吗直接叫多线程不就好了
已经解决了async有两种运行模式
一种是std::launch::deffered这个模式下是真正的异步
注意异步下调用get只是阻塞调用线程执行不会阻塞其他非调用线程,意思就是当我异步了然后想要执行这个线程要调用.get函数并且还要跟其他非调用线程去抢夺这个时间片
一种是std::launch::async这个模式下是多线程