无法弄清楚为什么这个看似递归的readKey调用不会导致调用堆栈增长:
#include <future>
#include <iostream>
void readKey()
{
std::async(std::launch::async, [](){
if (getchar() != 113) // 'q' to quit
readKey();
});
}
int main(int, char**)
{
readKey();
return 0;
}
谢谢你解释!
: - )
答案 0 :(得分:1)
它不是递归调用,因为您在具有单独堆栈的新线程(std::launch::async
)上调用它。因此,当您在readKey
中调用main
时,它会生成一个新线程,其中readKey
将被调用,即使不等待它也会退出。