28个版本
0.14.1 | 2024年8月2日 |
---|---|
0.14.0 | 2024年7月4日 |
0.14.0-rc.4 | 2024年6月27日 |
0.13.1 | 2024年3月18日 |
0.3.0 | 2020年11月3日 |
在 游戏开发 中排名第 1674
每月下载量达 95,522 次
在 1,285 个crate中 使用(直接使用35个)
94KB
1.5K SLoC
Bevy Tasks
一个简洁的任务执行器,适用于bevy。 :)
这是一个具有最小依赖项的简单线程池。主要用例是作用域内的分叉-连接,即从单个线程中派生任务,并使该线程等待这些任务的完成。这专门针对 bevy
,作为对 rayon
的更轻量级替代方案。该库还提供从数据切片生成任务的功能。这个库旨在用于游戏,并不试图确保派生任务的可公平性或顺序。
它基于 async-executor
,一个轻量级的执行器,允许最终用户管理自己的线程。《code>async-executor 是基于异步标准库的核心组件 async-task
。
用法
为了能够在多线程环境中优化任务执行,bevy提供了三个不同的线程池,可以通过它们派生不同类型的任务。(即使在单线程环境中,也使用相同的API,即使执行仅限于单个线程。这目前适用于WASM目标。)确定每个池中应该放置哪种工作的工作取决于延迟需求
-
对于CPU密集型工作(通常旋转直到完成的任务)我们有标准的
ComputeTaskPool
和一个AsyncComputeTaskPool
。不需要完成以呈现下一帧的工作应发送到AsyncComputeTaskPool
。 -
对于IO密集型工作(在“唤醒”状态下花费很少时间的任务),我们有一个
IoTaskPool
,其任务是期望非常快完成的。一般来说,它们只需要等待从某处(例如磁盘)接收数据,并在数据准备好消费时向其他系统发出信号。(可能是通过通道)
依赖项
~0.6–11MB
~117K SLoC