Digamos que eu tenha uma função que retorna um std::vector
e eu queira chamá-la de forma assíncrona.
std::vector<int> foo(int n);
int main() {
auto future_vector = std::async(foo, 999);
// ... other stuff
// Questions are all about this:
auto actual_vector = future_vector.get();
// ... do stuff with actual_vector ...
}
Q1: actual_vector
O copy-constructed ou o move-constructed são do estado compartilhado? Preciso escrever std::move(future_vector.get())
explicitamente?
Q2: Supondo que a função seja concluída e não cumpra mais a promessa: o tempo de vida do estado compartilhado termina quando get
é chamado no futuro ou ele persiste até que o futuro atinja o fim de seu tempo de vida?