4 releases
new 0.0.4 | May 14, 2025 |
---|---|
0.0.3 | May 8, 2025 |
0.0.2 | Apr 30, 2025 |
0.0.1 | Apr 27, 2025 |
#773 in Asynchronous
398 downloads per month
155KB
4K
SLoC
async + execute = asyncute is a new async executor that execute async futures globally.
Features:
- Trace status and auto remove dead executor, and auto start new executor thread if all exists executor is working or too high backlogs.
- unlike smolscale, there is no per-executor queues for queuing Runnable, asyncute only have single global MPMC queue (and all executors receives Runnable from it), so Executor no need to push Runnable back to global queue on droppped.
- unlike other library that uses work-stealing queue, asyncute uses bounded channel for get notify if Runnable available, and if channel is full, spawn() will blocking instead of discarding.
- uses propagate-panic always, uses
std::panic::catch_unwind
always. avoid single async task causes entire executor exit unexpectedly. - analysis and profile. it can easy to get the executor's status (idle, working, running, work loads, etc.), and start/stop profile in runtime to see average Runnable took how many time to run, current alive Runnables, count of ready/pending polls, etc.
- spawn new executor manually, wake monnitor manually, and start monitor manually.
- runtime configurable Config.
Dependencies
~3.5–8.5MB
~72K SLoC