Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <future>
- // using std::future, std::async, std::launch
- #include <algorithm>
- // using std::transform, std::for_each
- #include <iterator>
- // using std::back_inserter
- #include <functional>
- // using std::mem_fn
- #include <vector>
- // using std::vector
- #include <string>
- // using std::string
- #include <iostream>
- // using std::cout, std::endl
- namespace {
- std::string operation(const std::string& input)
- {
- return input + " bar";
- }
- }
- int main()
- {
- std::vector<std::string> inputs(10, std::string("foo"));
- // fork
- std::vector<std::future<std::string> > futures;
- auto start_async = [](const std::string& input) {
- return std::async(std::launch::async, operation, input);
- };
- std::transform(inputs.cbegin(), inputs.cend(), std::back_inserter(futures),
- start_async);
- // join
- std::vector<std::string> results;
- std::transform(futures.begin(), futures.end(), std::back_inserter(results),
- std::mem_fn(&std::future<std::string>::get));
- // demo output
- auto print_result = [](const std::string& output) {
- std::cout << output << std::endl;
- };
- std::for_each(results.cbegin(), results.cend(), print_result);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement