This is an old revision of the document!
Nous considérons la fonction suivante qui calcule les décimales de « e ».
std::string computeE(int numberOfDigits) { int sizeOfTable = numberOfDigits + 9; int* table = (int*)_alloca(sizeOfTable * sizeof(numberOfDigits)); table[0] = 0; table[1] = 2; for (int i = sizeOfTable - 1; i > 0; i--) { table[i] = 1; } std::ostringstream output; int x = 0; table[1] = 2; for (; sizeOfTable > 9; sizeOfTable -- ) { for (int i = sizeOfTable - 1; i > 0; i--) { table[i] = x % i; x = 10 * table[i - 1] + x / i; } output << x; } return output.str(); }
Implanter la fonction et vérifier que celle-ci fonctionne correctement.
Nous constatons que calculer 10000 ou 20000 décimales de e, cela prend du temps. Nous souhaitons transformer cela en une fonction asynchrone à l’aide de la fonction std::async.
Ecrire le code transformant la précédente fonction en une fonction asynchrone en utilisant la fonction std::async.
Lancer deux calculs asynchrones, l’un calculant les 1000 premières décimales, l’autre les 10000 premières décimales et affichés les résultats dès que ceux-ci sont disponibles.