|
4 | 4 |
|
5 | 5 | ## TooManyCooks |
6 | 6 | TooManyCooks is a runtime and concurrency library for C++20 coroutines. Its goals: |
7 | | -- be the fastest general-purpose coroutine library available (see the :chart_with_upwards_trend: [benchmarks](https://github.com/tzcnt/runtime-benchmarks)) |
| 7 | +- be the fastest general-purpose coroutine library available (see the [benchmarks](https://github.com/tzcnt/runtime-benchmarks)) |
8 | 8 | - clean API with minimal noise |
9 | 9 | - extensive feature set |
10 | 10 | - simple and clear path to migrate legacy applications |
11 | 11 | - simple and clear path to integrate with 3rd-party executors/event loops |
12 | 12 |
|
13 | 13 | It provides: |
14 | 14 | - a blazing fast, lock-free, work-stealing, continuation-stealing thread pool (`ex_cpu`) |
15 | | -- automatic, hardware-optimized thread configuration via [hwloc](https://www.open-mpi.org/projects/hwloc/) |
16 | | -- network I/O, file I/O, and timers support by integration with Asio (via :octocat: [tmc-asio](https://github.com/tzcnt/tmc-asio)) |
| 15 | +- advanced hardware detection and thread configuration via [hwloc](https://www.open-mpi.org/projects/hwloc/) |
| 16 | +- network I/O, file I/O, and timers support by integration with Asio (via [tmc-asio](https://github.com/tzcnt/tmc-asio)) |
17 | 17 | - support for multiple task priority levels |
18 | 18 | - support for both coroutines and regular functors in most APIs |
19 | 19 | - a suite of utility functions for fluently interacting with tasks, awaitables, and executors |
@@ -59,14 +59,13 @@ TooManyCooks is a header-only library. Adding it to your project is simple: |
59 | 59 | 1. Download the library and add `/include` to your include path. |
60 | 60 | 2. Add `#define TMC_IMPL` and `#include "tmc/all_headers.hpp"` to exactly one file in your project. |
61 | 61 |
|
62 | | -For a minimal project template, see :octocat: [tmc-hello-world](https://github.com/tzcnt/tmc-hello-world). |
| 62 | +For a minimal project template, see [tmc-hello-world](https://github.com/tzcnt/tmc-hello-world). |
63 | 63 |
|
64 | 64 | ### Configuration |
65 | 65 | TooManyCooks will work out of the box as a header-only library without any configuration. |
66 | 66 | However, some performance tuning options are available. See the documentation section [Build-Time Options](https://fleetcode.com/oss/tmc/docs/latest/build_flags.html) for more info. |
67 | 67 |
|
68 | 68 | ### Roadmap |
69 | | -- v1.3: hwloc improvements (CPU topology query, P and E core detection, container CPU quota detection, unlimited threads) |
70 | 69 | - v1.4: awaitable traits / concepts, zero-copy channel, awaitable result streaming |
71 | 70 | - Beyond: See the [issues tagged "enhancement"](https://github.com/tzcnt/TooManyCooks/issues?q=is%3Aissue%20state%3Aopen%20label%3Aenhancement) for future planned work. Please leave a :thumbsup: on any issues that are important to you. I will use this as a way to gauge community interest on what should be developed next. |
72 | 71 |
|
|
0 commit comments