🍺 BREW Explorer

← all formulae

asyncplusplus

brew install asyncplusplus v1.2 MIT

Concurrency framework for C++11

4
30-day installs · #11053
6
90-day · #13823
26
365-day · #13081
1.4k
★ GitHub stars · updated 1y ago

Build dependencies

Links

Raw metadata
{
  "aliases": [],
  "alternatives": [],
  "build_dependencies": [
    "cmake"
  ],
  "categories": [],
  "caveats": null,
  "conflicts_with": [],
  "dependencies": [],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "Concurrency framework for C++11",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:35:35+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "asyncplusplus",
  "github_default_branch": "master",
  "github_last_commit_at": "2024-10-11T12:13:08Z",
  "github_readme_excerpt": "Async++\n=======\n\nAsync++ is a lightweight concurrency framework for C++11. The concept was inspired by the [Microsoft PPL library](http://msdn.microsoft.com/en-us/library/dd492418.aspx) and the [N3428](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3428.pdf) C++ standard proposal.\n\nExample\n-------\nHere is a short example which shows some features of Async++:\n\n```c++\n#include \u003ciostream\u003e\n#include \u003casync++.h\u003e\n\nint main()\n{\n    auto task1 = async::spawn([] {\n        std::cout \u003c\u003c \"Task 1 executes asynchronously\" \u003c\u003c std::endl;\n    });\n    auto task2 = async::spawn([]() -\u003e int {\n        std::cout \u003c\u003c \"Task 2 executes in parallel with task 1\" \u003c\u003c std::endl;\n        return 42;\n    });\n    auto task3 = task2.then([](int value) -\u003e int {\n        std::cout \u003c\u003c \"Task 3 executes after task 2, which returned \"\n                  \u003c\u003c value \u003c\u003c std::endl;\n        return value * 3;\n    });\n    auto task4 = async::when_all(task1, task3);\n    auto task5 = task4.then([](std::tuple\u003casync::task\u003cvoid\u003e,\n                                          async::task\u003cint\u003e\u003e results) {\n        std::cout \u003c\u003c \"Task 5 executes after tasks 1 and 3. Task 3 returned \"\n                  \u003c\u003c std::get\u003c1\u003e(results).get() \u003c\u003c std::endl;\n    });\n\n    task5.get();\n    std::cout \u003c\u003c \"Task 5 has completed\" \u003c\u003c std::endl;\n\n    async::parallel_invoke([] {\n        std::cout \u003c\u003c \"This is executed in parallel...\" \u003c\u003c std::endl;\n    }, [] {\n        std::cout \u003c\u003c \"with this\" \u003c\u003c std::endl;\n    });\n\n    async::parallel_for(async::irange(0, 5), [](int x) {\n        std::cout \u003c\u003c x;\n    });\n    std::cout \u003c\u003c std::endl;\n\n    int r = async::parallel_reduce({1, 2, 3, 4}, 0, [](int x, int y) {\n        return x + y;\n    });\n    std::cout \u003c\u003c \"The sum of {1, 2, 3, 4} is \" \u003c\u003c r \u003c\u003c std::endl;\n}\n\n// Output (order may vary in some places):\n// Task 1 executes asynchronously\n// Task 2 executes in parallel with task 1\n// Task 3 executes after task 2, which returned 42\n// Task 5 executes after tasks 1 and 3. Task 3 returned 126\n// Task 5 has completed\n",
  "github_repo": "Amanieu/asyncplusplus",
  "github_stars": 1417,
  "github_topics": [],
  "homepage": "https://github.com/Amanieu/asyncplusplus",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": 4,
  "installs_365d": 26,
  "installs_90d": 6,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "MIT",
  "llm_generated_at": null,
  "llm_model": null,
  "name": "asyncplusplus",
  "oldnames": [],
  "one_liner": null,
  "optional_dependencies": [],
  "rank_30d": 11053,
  "rank_365d": 13081,
  "rank_90d": 13823,
  "raw_hash": "e251ced86b91aa32",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/a/asyncplusplus.rb",
  "tap": "homebrew/core",
  "test_dependencies": [],
  "uses_from_macos": [],
  "version_head": null,
  "version_stable": "1.2",
  "versioned_formulae": [],
  "why_use_this": null
}