Was ist der Unterschied zwischen packaged_task und async

Während der Arbeit mit dem Thread Modell von C++11, bemerkte ich, dass

std::packaged_task<int(int,int)> task([](int a, int b) { return a + b; });
auto f = task.get_future();
task(2,3);
std::cout << f.get() << '\n';

und

auto f = std::async(std::launch::async, 
    [](int a, int b) { return a + b; }, 2, 3);
std::cout << f.get() << '\n';

scheinen zu tun genau das gleiche. Ich verstehe, dass es einen großen Unterschied, wenn ich lief std::async mit std::launch::deferred, aber ist es in diesem Fall?

Was ist der Unterschied zwischen diesen beiden Ansätzen, und vor allem, in was Fällen verwenden sollte, ich benutze den einen über den anderen?

InformationsquelleAutor nijansen | 2013-08-09

Schreibe einen Kommentar