Dlaczego powinienem używać std :: async?
Staram się zgłębić wszystkie opcje nowego standardu C ++ 11, używając std :: async i czytając jego definicję, zauważyłem 2 rzeczy, przynajmniej pod linuxem z gcc 4.8.1:
to jest nazwaneasynchroniczny, ale ma naprawdę „sekwencyjne zachowanie”, w zasadzie w wierszu, w którym nazywaszprzyszłość związane z twoją funkcją asynchronicznąbla, program blokuje się aż do wykonaniabla to jest zakończone.to zależy od dokładnie tej samej zewnętrznej biblioteki co inne i lepszych, nieblokujących rozwiązań, co oznaczapthread
, jeśli chcesz użyćstd::async
potrzebujesz pthread.w tym momencie naturalne jest dla mnie pytanie, dlaczego wybrać std :: async na nawet prosty zestaw funktorów? Jest to rozwiązanie, które w ogóle nie skaluje się, im więcej dzwonisz w przyszłości, tym mniej reaguje Twój program.
Czy czegoś mi brakuje? Czy możesz pokazać przykład, który jest dozwolony do wykonania w asynchroniczny, nie blokujący sposób?