bevy/crates/bevy_tasks
Mike 0f3f628c48 tick local executor (#6121)
# Objective

- #4466 broke local tasks running.
- Fixes https://github.com/bevyengine/bevy/issues/6120

## Solution

- Add system for ticking local executors on main thread into bevy_core where the tasks pools are initialized.
- Add ticking local executors into thread executors

## Changelog

- tick all thread local executors in task pool.

## Notes

- ~~Not 100% sure about this PR. Ticking the local executor for the main thread in scope feels a little kludgy as it requires users of bevy_tasks to be calling scope periodically for those tasks to make progress.~~ took this out in favor of a system that ticks the local executors.
2022-10-24 13:46:40 +00:00
..
examples small and mostly pointless refactoring (#2934) 2022-02-13 22:33:55 +00:00
src tick local executor (#6121) 2022-10-24 13:46:40 +00:00
Cargo.toml Nested spawns on scope (#4466) 2022-09-28 01:59:10 +00:00
README.md Cleanup of Markdown Files and add CI Checking (#1463) 2021-02-22 04:50:05 +00:00

bevy_tasks

A refreshingly simple task executor for bevy. :)

This is a simple threadpool with minimal dependencies. The main usecase is a scoped fork-join, i.e. spawning tasks from a single thread and having that thread await the completion of those tasks. This is intended specifically for bevy as a lighter alternative to rayon for this specific usecase. There are also utilities for generating the tasks from a slice of data. This library is intended for games and makes no attempt to ensure fairness or ordering of spawned tasks.

It is based on async-executor, a lightweight executor that allows the end user to manage their own threads. async-executor is based on async-task, a core piece of async-std.

Dependencies

A very small dependency list is a key feature of this module

├── async-executor
│   ├── async-task
│   ├── concurrent-queue
│   │   └── cache-padded
│   └── fastrand
├── num_cpus
│   └── libc
├── parking
└── futures-lite