Async++ is a lightweight concurrency framework for C++11. The concept was inspired by the Microsoft PPL library and the N3428 C++ standard proposal.
Here is a short example which shows some features of Async++:
#include <iostream> #include <async++.h> int main() { auto task1 = async::spawn([] { std::cout << "Task 1 executes asynchronously" << std::endl; }); auto task2 = async::spawn([]() -> int { std::cout << "Task 2 executes in parallel with task 1" << std::endl; return 42; }); auto task3 = task2.then([](int value) -> int { std::cout << "Task 3 executes after task 2, which returned " << value << std::endl; return value * 3; }); auto task4 = async::when_all(task1, task3); auto task5 = task4.then([](std::tuple<async::task<void>, async::task<int>> results) { std::cout << "Task 5 executes after tasks 1 and 3. Task 3 returned " << std::get<1>(results).get() << std::endl; }); task5.get(); std::cout << "Task 5 has completed" << std::endl; async::parallel_invoke([] { std::cout << "This is executed in parallel..." << std::endl; }, [] { std::cout << "with this" << std::endl; }); async::parallel_for(async::irange(0, 5), [](int x) { std::cout << x; }); std::cout << std::endl; int r = async::parallel_reduce({1, 2, 3, 4}, 0, [](int x, int y) { return x + y; }); std::cout << "The sum of {1, 2, 3, 4} is " << r << std::endl; } // Output (order may vary in some places): // Task 1 executes asynchronously // Task 2 executes in parallel with task 1 // Task 3 executes after task 2, which returned 42 // Task 5 executes after tasks 1 and 3. Task 3 returned 126 // Task 5 has completed // This is executed in parallel... // with this // 01234 // The sum of {1, 2, 3, 4} is 10
The only requirement to use Async++ is a C++11 compiler and standard library. Unfortunately C++11 is not yet fully implemented on most platforms. Here is the list of OS and compiler combinations which are known to work.
Instructions for compiling Async++ and using it in your code are available on the Building and Installing page.
The Async++ documentation is split into four parts:
You can contact me by email at amanieu@gmail.com.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4