28个版本

0.14.1 2024年8月2日
0.14.0 2024年7月4日
0.14.0-rc.42024年6月27日
0.13.1 2024年3月18日
0.3.0 2020年11月3日

游戏开发 中排名第 1674

Download history 14862/week @ 2024-05-05 14050/week @ 2024-05-12 13869/week @ 2024-05-19 15769/week @ 2024-05-26 17294/week @ 2024-06-02 12287/week @ 2024-06-09 16050/week @ 2024-06-16 14147/week @ 2024-06-23 15299/week @ 2024-06-30 18507/week @ 2024-07-07 20692/week @ 2024-07-14 21839/week @ 2024-07-21 24310/week @ 2024-07-28 19900/week @ 2024-08-04 28503/week @ 2024-08-11 20460/week @ 2024-08-18

每月下载量达 95,522
1,285 个crate中 使用(直接使用35个)

MIT/Apache

94KB
1.5K SLoC

Bevy Tasks

License Crates.io Downloads Docs Discord

一个简洁的任务执行器,适用于bevy。 :)

这是一个具有最小依赖项的简单线程池。主要用例是作用域内的分叉-连接,即从单个线程中派生任务,并使该线程等待这些任务的完成。这专门针对 bevy,作为对 rayon 的更轻量级替代方案。该库还提供从数据切片生成任务的功能。这个库旨在用于游戏,并不试图确保派生任务的可公平性或顺序。

它基于 async-executor,一个轻量级的执行器,允许最终用户管理自己的线程。《code>async-executor 是基于异步标准库的核心组件 async-task

用法

为了能够在多线程环境中优化任务执行,bevy提供了三个不同的线程池,可以通过它们派生不同类型的任务。(即使在单线程环境中,也使用相同的API,即使执行仅限于单个线程。这目前适用于WASM目标。)确定每个池中应该放置哪种工作的工作取决于延迟需求

  • 对于CPU密集型工作(通常旋转直到完成的任务)我们有标准的 ComputeTaskPool 和一个 AsyncComputeTaskPool。不需要完成以呈现下一帧的工作应发送到 AsyncComputeTaskPool

  • 对于IO密集型工作(在“唤醒”状态下花费很少时间的任务),我们有一个IoTaskPool,其任务是期望非常快完成的。一般来说,它们只需要等待从某处(例如磁盘)接收数据,并在数据准备好消费时向其他系统发出信号。(可能是通过通道)

依赖项

~0.6–11MB
~117K SLoC