なぜこの、一見再帰、readKeyの呼び出しが成長して、コールスタックにはなりません把握することはできません:C++非同期ラムダ「再帰」コール
#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;
}
あなたは砦説明ありがとうございました!
どのようにコールスタックサイズを決定していますか? –
スレッドは 'readKey();を何度も呼び出すことはありません。 'std :: async'を呼び出すたびに、新しいスタックを持つ新しいスレッドが作成されます。 –
@FrançoisAndrieux 'async'によって返される' std :: future'は、スレッドが終了するまでデストラクタでブロックされます。 – NathanOliver