想不通爲什麼這個看似遞歸,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