The C++11 function template std::async() provides a mechanism to launch a function potentially in a new thread and provides the result of the function in a future object.
C++11 provides the function template std::async() as a simple tool for running functions asynchronously. Its parameters are a callable object and an optional list of arguments and its return type is an instantiation of the std::future class template.
Rather than invoking the target object immediately it will be called asynchronously, either in a new thread or deferred until the result is needed.  The std::future object can be used to retrieve the result of the asynchronous call or any exceptions it throws.
The initial proposals for std::async() were N2889 An Asynchronous Call for C++ and A simple async().
See also future
 
     
     
     
     
     
     
     
     
     
     
     
    